Clean up Notifications and re-enable Account menu for Admins

This commit is contained in:
Denis Volkov 2022-11-01 21:01:31 -07:00
parent e80ca54713
commit e58ac60253
4 changed files with 141 additions and 159 deletions

View File

@ -13,7 +13,7 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Amen</RootNamespace>
<AssemblyName>Amen</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.8.1</TargetFrameworkVersion>
<MvcBuildViews>false</MvcBuildViews>
<UseIISExpress>true</UseIISExpress>
<IISExpressSSLPort />
@ -242,9 +242,9 @@
<Reference Include="System.Web.Entity" />
<Reference Include="System.Web.ApplicationServices" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Web.Extensions" />
<Reference Include="System.Web" />
<Reference Include="System.Web.Abstractions" />
<Reference Include="System.Web.Extensions" />
<Reference Include="System.Web.Routing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Workflow.Activities" />

View File

@ -1,14 +1,11 @@
using Amen.Models;
using System;
using System.Configuration;
using System.Diagnostics;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Mail;
using System.Web.Mvc;
using System.Web.Routing;
using System.Xml;
using Twilio;
namespace Amen.Controllers
@ -54,7 +51,6 @@ namespace Amen.Controllers
return View("~/Views/Email/PrayerSubmitted.cshtml", model);
}
public ActionResult PreviewNoteSent(int id)
{
var prayer = controllerHelper.db.Prayers.Include("Affiliate").FirstOrDefault(i => i.Id == id);
@ -72,7 +68,6 @@ namespace Amen.Controllers
return View("~/Views/Email/NoteSent.cshtml", model);
}
public ActionResult PreviewAdminNotification(int id)
{
var prayer = controllerHelper.db.Prayers.Include("Affiliate").FirstOrDefault(i => i.Id == id);
@ -154,15 +149,23 @@ namespace Amen.Controllers
}
}
static bool CanSendText(Affiliate affiliate, ApplicationUser appUser, Prayer prayer)
static bool CanSendText(Affiliate affiliate, ref ApplicationUser appUser, Prayer prayer)
{
//if we don't have what we need then return
if (affiliate == null || appUser == null || prayer == null)
if (affiliate == null || prayer == null)
return false;
//if user opted not to recieve text notifications then return
if (!appUser.IsSmsCapable || !prayer.EnableTextNotification || !affiliate.IsSmsCapable)
return false;
if (appUser == null)
{
//if login not required, then set the user with anonymous email and name
appUser = new ApplicationUser()
{
Email = prayer.AnonymousEmail,
PhoneNumber = prayer.AnonymousPhone,
FullName = prayer.AnonymousName,
EnableSmsNotifications = true
};
}
return true;
}
@ -175,37 +178,16 @@ namespace Amen.Controllers
if (appUser == null)
{
// log in is no longer required
//if (!affiliate.RequireLoginForNoticiations)
//{
//if login not required, then set the user with anonymous email and name
appUser = new ApplicationUser()
{
Email = prayer.AnonymousEmail,
PhoneNumber = prayer.AnonymousPhone,
FullName = prayer.AnonymousName,
EnableEmailNotifications = true
};
//}
//else
//{
// return false;
//}
//if login not required, then set the user with anonymous email and name
appUser = new ApplicationUser()
{
Email = prayer.AnonymousEmail,
PhoneNumber = prayer.AnonymousPhone,
FullName = prayer.AnonymousName,
EnableEmailNotifications = true
};
}
//ignore any settings that logged-in user might have - comment out the following
////this indicates that someone submitted a prayer, so we should check if the user allows notifications, and then send them an email regarless of whether they sellected to allow prayed for notifications
//if (appUser.EnableEmailNotifications && submitCheck)
// return true;
////if doing a noteCheck, then ignore the prayer.EnableEmailNotification flag as they explicitly chose to allow notes of encouragement but not necessarily to be notified when someone prays.
//if (appUser.EnableEmailNotifications && noteCheck && prayer.EnableEmailNote)
// return true;
////if user opted not to recieve notifications then return
//if (!appUser.EnableEmailNotifications || !prayer.EnableEmailNotification)
// return false;
return true;
}
@ -246,7 +228,7 @@ namespace Amen.Controllers
}
}
if (CanSendText(affiliate, appUser, prayer))
if (CanSendText(affiliate, ref appUser, prayer))
{
if (prayer.ContactPreference == "phone" || prayer.ContactPreference == "any")
{
@ -293,7 +275,7 @@ namespace Amen.Controllers
model.DetailUrl = controller.controllerHelper.Absolute(urlHelper, urlHelper.Action("Detail", "Prayer", new { id = prayer.Id, affiliatekey = affiliate.Key }));
model.ManageUrl = controller.controllerHelper.Absolute(urlHelper, urlHelper.Action("Index", "Manage", new { affiliatekey = affiliate.Key }));
if (CanSendText(affiliate, appUser, prayer))
if (CanSendText(affiliate, ref appUser, prayer))
{
if (prayer.ContactPreference == "phone" || prayer.ContactPreference == "any")
{

View File

@ -128,8 +128,10 @@
<li>@Html.ActionLink("Dashboard", "Index", "Group", new { affiliatekey = ViewBag.AffiliateKey }, new { @class = controllerName == "Affiliate" ? "selected" : "" })</li>
}
</ul>
<!-- Remove user login from the UI -->
@*@Html.Partial("_LoginPartial")*@
@if (User.IsInRole(Amen.Controllers.ControllerHelper.Role_Administrator) || User.IsInRole(Amen.Controllers.ControllerHelper.Role_AffiliateAdministrator) || User.IsInRole(Amen.Controllers.ControllerHelper.Role_SuperAdministrator))
{
@Html.Partial("_LoginPartial")
}
</div>
</div>

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0"?>
<!-- Than was here-->
<!--
For more information on how to configure your ASP.NET application, please visit
@ -7,7 +7,7 @@
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
</configSections>
<connectionStrings>
<!--<add name="AmenPrayerDev" connectionString="Data Source=.\SQLEXPRESS; Integrated Security=False;Initial Catalog=AmenPrayer; User ID=amenadmin; Password=Pr@y4M3Now; MultipleActiveResultSets=True;" providerName="System.Data.SqlClient"/>-->
@ -16,71 +16,69 @@
<!--<add name="AmenPrayerProd" connectionString="Server=tcp:amen.database.windows.net,1433;Database=AmenPrayer-Prod;User ID=amenadmin@amen.database.windows.net;Password=Pr@y4M3Now;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;" providerName="System.Data.SqlClient"/>-->
<!--<add name="AmenPrayer" connectionString="Server=tcp:amen.database.windows.net,1433;Database=AmenPrayer-Dev;User ID=amenadmin@amen.database.windows.net;Password=Pr@y4M3Now;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;" providerName="System.Data.SqlClient" />-->
<!--<add name="AmenPrayer" connectionString="Data Source=.\SQLEXPRESS; Integrated Security=False;Initial Catalog=AmenPrayer; User ID=amenadmin; Password=Pr@y4M3Now; MultipleActiveResultSets=True;" providerName="System.Data.SqlClient"/>-->
<!-- Local Dev -->
<!--<add name="AmenPrayer"
connectionString="
Data Source=.\SQLEXPRESS;
Initial Catalog=AmenPrayer-Dev;
Integrated Security=SSPI;
MultipleActiveResultSets=True;"
providerName="System.Data.SqlClient"
/>-->
<!-- Stage -->
<add name="AmenPrayer" connectionString=" Server=tcp:amen.database.windows.net,1433; Initial Catalog=AmenPrayer-Stage; User ID=amenadmin; Password=Pr@y4M3Now; MultipleActiveResultSets=True; Encrypt=True; TrustServerCertificate=False; Connection Timeout=30;" providerName="System.Data.SqlClient" />
<!-- Prod -->
<!--<add name="AmenPrayer"
connectionString="
Server=tcp:amen.database.windows.net,1433;
Initial Catalog=AmenPrayer-Prod;
User ID=amenadmin;
Password=Pr@y4M3Now;
MultipleActiveResultSets=True;
Encrypt=True;
TrustServerCertificate=False;
Connection Timeout=30;"
providerName="System.Data.SqlClient"
/>-->
<!--<add name="AmenPrayer"
connectionString="
Server=tcp:amen.database.windows.net,1433;
Database=AmenPrayer-Prod;
User ID=amenadmin@amen.database.windows.net;
Password=Pr@y4M3Now;
Trusted_Connection=False;
Encrypt=True;
Connection Timeout=30;"
providerName="System.Data.SqlClient" />-->
<!-- Local Dev -->
<!--<add name="AmenPrayer"
connectionString="
Data Source=.\SQLEXPRESS;
Initial Catalog=AmenPrayer-Dev;
Integrated Security=SSPI;
MultipleActiveResultSets=True;"
providerName="System.Data.SqlClient"
/>-->
<!-- Stage -->
<add name="AmenPrayer" connectionString=" Server=tcp:amen.database.windows.net,1433; Initial Catalog=AmenPrayer-Stage; User ID=amenadmin; Password=Pr@y4M3Now; MultipleActiveResultSets=True; Encrypt=True; TrustServerCertificate=False; Connection Timeout=30;" providerName="System.Data.SqlClient"/>
<!-- Prod -->
<!--<add name="AmenPrayer"
connectionString="
Server=tcp:amen.database.windows.net,1433;
Initial Catalog=AmenPrayer-Prod;
User ID=amenadmin;
Password=Pr@y4M3Now;
MultipleActiveResultSets=True;
Encrypt=True;
TrustServerCertificate=False;
Connection Timeout=30;"
providerName="System.Data.SqlClient"
/>-->
<!--<add name="AmenPrayer"
connectionString="
Server=tcp:amen.database.windows.net,1433;
Database=AmenPrayer-Prod;
User ID=amenadmin@amen.database.windows.net;
Password=Pr@y4M3Now;
Trusted_Connection=False;
Encrypt=True;
Connection Timeout=30;"
providerName="System.Data.SqlClient" />-->
</connectionStrings>
<appSettings>
<add key="IsUpgradeInProgress" value="False" />
<add key="EmailOverrideToAddress" value="" />
<add key="IsUpgradeInProgress" value="False"/>
<add key="EmailOverrideToAddress" value=""/>
<!--<add key="EmailServer" value="mail.amenprayer.com" />-->
<!--<add key="EmailServerPort" value="587" />-->
<!--<add key="EmailServer" value="amenprayer-com.mail.protection.outlook.com" />-->
<!--<add key="EmailServerPort" value="25" />-->
<add key="EmailServer" value="mail.smtp2go.com" />
<add key="EmailServerPort" value="2525" />
<add key="EmailServerEnableSsl" value="true" />
<add key="EmailServerUsername" value="amenprayerapp" />
<add key="EmailServerPassword" value="ZWxnOWIzNTBpbzgw" />
<add key="NotifyEmailFromAccount" value="Hope@amenprayer.com" />
<add key="NotifyEmailFromAccountName" value="Amen: The Prayer App" />
<add key="EmailServer" value="mail.smtp2go.com"/>
<add key="EmailServerPort" value="2525"/>
<add key="EmailServerEnableSsl" value="true"/>
<add key="EmailServerUsername" value="amenprayerapp"/>
<add key="EmailServerPassword" value="ZWxnOWIzNTBpbzgw"/>
<add key="NotifyEmailFromAccount" value="Hope@amenprayer.com"/>
<add key="NotifyEmailFromAccountName" value="Amen: The Prayer App"/>
<!--<add key="NotifyEmailFromPassword" value="As&amp;g%i4Y@8$&amp;4j7zpyo2nr$&amp;" />-->
<add key="AccountEmailFromAccount" value="Angel@amenprayer.com" />
<add key="AccountEmailFromAccountName" value="Amen: The Prayer App" />
<add key="AccountEmailFromAccount" value="Angel@amenprayer.com"/>
<add key="AccountEmailFromAccountName" value="Amen: The Prayer App"/>
<!--<add key="AccountEmailFromPassword" value="w#@%@#6fg2ycN6qgd36$^b&amp;w" />-->
<add key="SmsOverrideToNumber" value="" />
<add key="AzureBlobStorageLogoFolder" value="logo" />
<add key="AzureBlobStorageAccount" value="amen" />
<add key="AzureBlobStorageAccountKey" value="KHwu8oUqhq08wnEWNBYwUo7698oFRXd4AAYlH3VFlrutewZ8zDONmg4LmceHFjdVksY/6G9Z8KwiE3O8ghuXfQ==" />
<add key="FacebookAppId" value="1837084549899587" />
<add key="FacebookAppSecret" value="53452d285d8cf760f8fe8da491ddfb20" />
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
<add key="SmsOverrideToNumber" value=""/>
<add key="AzureBlobStorageLogoFolder" value="logo"/>
<add key="AzureBlobStorageAccount" value="amen"/>
<add key="AzureBlobStorageAccountKey" value="KHwu8oUqhq08wnEWNBYwUo7698oFRXd4AAYlH3VFlrutewZ8zDONmg4LmceHFjdVksY/6G9Z8KwiE3O8ghuXfQ=="/>
<add key="FacebookAppId" value="1837084549899587"/>
<add key="FacebookAppSecret" value="53452d285d8cf760f8fe8da491ddfb20"/>
<add key="webpages:Version" value="3.0.0.0"/>
<add key="webpages:Enabled" value="false"/>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
<!--
For a description of web.config changes see http://go.microsoft.com/fwlink/?LinkId=235367.
@ -91,20 +89,20 @@
</system.Web>
-->
<system.web>
<authentication mode="None" />
<customErrors mode="Off" />
<compilation debug="true" targetFramework="4.8" />
<httpRuntime targetFramework="4.5" executionTimeout="300" maxRequestLength="10240" />
<authentication mode="None"/>
<customErrors mode="Off"/>
<compilation debug="true" targetFramework="4.8.1"/>
<httpRuntime targetFramework="4.5" executionTimeout="300" maxRequestLength="10240"/>
</system.web>
<system.webServer>
<modules>
<remove name="FormsAuthentication" />
<remove name="FormsAuthentication"/>
</modules>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0"/>
<remove name="OPTIONSVerbHandler"/>
<remove name="TRACEVerbHandler"/>
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0"/>
</handlers>
<!--<rewrite>
<rules>
@ -121,99 +119,99 @@
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
<assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
<assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
<assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
<assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
<assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed"/>
<bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.2.0" />
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.2.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0" />
<assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.2" newVersion="6.0.0.2" />
<assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-6.0.0.2" newVersion="6.0.0.2"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.1" newVersion="4.0.1.1" />
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-4.0.1.1" newVersion="4.0.1.1"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Extensions.Primitives" publicKeyToken="adb9793829ddae60" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.1.8.0" newVersion="3.1.8.0" />
<assemblyIdentity name="Microsoft.Extensions.Primitives" publicKeyToken="adb9793829ddae60" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-3.1.8.0" newVersion="3.1.8.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Extensions.Configuration.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.1.8.0" newVersion="3.1.8.0" />
<assemblyIdentity name="Microsoft.Extensions.Configuration.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-3.1.8.0" newVersion="3.1.8.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Extensions.DependencyInjection.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.1.8.0" newVersion="3.1.8.0" />
<assemblyIdentity name="Microsoft.Extensions.DependencyInjection.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-3.1.8.0" newVersion="3.1.8.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Extensions.Caching.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.1.8.0" newVersion="3.1.8.0" />
<assemblyIdentity name="Microsoft.Extensions.Caching.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-3.1.8.0" newVersion="3.1.8.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Extensions.Options" publicKeyToken="adb9793829ddae60" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.1.8.0" newVersion="3.1.8.0" />
<assemblyIdentity name="Microsoft.Extensions.Options" publicKeyToken="adb9793829ddae60" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-3.1.8.0" newVersion="3.1.8.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Extensions.Logging.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.1.8.0" newVersion="3.1.8.0" />
<assemblyIdentity name="Microsoft.Extensions.Logging.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-3.1.8.0" newVersion="3.1.8.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Extensions.DependencyInjection" publicKeyToken="adb9793829ddae60" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.1.8.0" newVersion="3.1.8.0" />
<assemblyIdentity name="Microsoft.Extensions.DependencyInjection" publicKeyToken="adb9793829ddae60" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-3.1.8.0" newVersion="3.1.8.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Extensions.Logging" publicKeyToken="adb9793829ddae60" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.1.8.0" newVersion="3.1.8.0" />
<assemblyIdentity name="Microsoft.Extensions.Logging" publicKeyToken="adb9793829ddae60" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-3.1.8.0" newVersion="3.1.8.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"/>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/>
</providers>
</entityFramework>
</configuration>