Commit 5b7e6fb2 authored by Venubabu Sunkara's avatar Venubabu Sunkara

Web Convertion Dotnet core

parent d0de158f
Pipeline #46937 failed with stages
in 6 seconds

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30907.101
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PharmaStoreReport", "PharmaStoreReport\PharmaStoreReport.csproj", "{E4B77406-B03C-4B57-8A12-59131C8CD28C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{E4B77406-B03C-4B57-8A12-59131C8CD28C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E4B77406-B03C-4B57-8A12-59131C8CD28C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E4B77406-B03C-4B57-8A12-59131C8CD28C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E4B77406-B03C-4B57-8A12-59131C8CD28C}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {F4BFD671-9FDB-4CAE-8D4D-1F5AD975DE74}
EndGlobalSection
EndGlobal
using PharmaStoreReport.Common.Interface;
using PharmaStoreReport.SqlHelper;
using System.Data;
namespace PharmaStoreReport.Common
{
public class CWHService : ICWHService
{
/// <summary>
/// Members initislizations
/// </summary>
private readonly IUtility _utility;
private readonly IConnections _connections;
private readonly ICaluclations _caluclations;
DataTable AllSheetHealthNotesData = new DataTable();
/// <summary>
/// Constructor creatio
/// </summary>
/// <param name="utility"></param>
/// <param name="connections"></param>
/// <param name="caluclations"></param>
public CWHService(IUtility utility, IConnections connections, ICaluclations caluclations)
{
this._connections = connections;
this._caluclations = caluclations;
this._utility = utility;
}
/// <summary>
/// GetCWHSheetData
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
public DataTable GetCWHSheetData(string fileName)
{
DataTable dtCwh = _connections.GetSheetData(fileName, ".xlsx", "CWH", _utility.GetSheetColumns("HealthNotesColumns"));
return _caluclations.CalculateHealthNotes(dtCwh);
}
/// <summary>
/// Get Myc Sheet Data
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
public DataTable GetMycsheetData(string fileName)
{
DataTable dtCwh = _connections.GetSheetData(fileName, ".xlsx", "My Chemist", _utility.GetSheetColumns("HealthNotesColumns"));
return _caluclations.CalculateHealthNotes(dtCwh);
}
/// <summary>
/// Get Other Sheets Data
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
public DataTable GetOthersheetData(string fileName)
{
DataTable dtCwh = _connections.GetSheetData(fileName, ".xlsx", "Other", _utility.GetSheetColumns("HealthNotesColumns"));
return _caluclations.CalculateHealthNotes(dtCwh);
}
/// <summary>
/// Get Healthy Notes Data
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
public DataTable GetHealthNotesData(string fileName)
{
DataTable dtCwh = _connections.GetSheetData(fileName, ".xlsx", "CWH", _utility.GetSheetColumns("HealthNotesColumns"));
DataTable cwhCalSheet = _caluclations.CalculateHealthNotes(dtCwh);
MargeMultipalSheetData(cwhCalSheet);
DataTable dtMyc = _connections.GetSheetData(fileName, ".xlsx", "My Chemist", _utility.GetSheetColumns("HealthNotesColumns"));
DataTable mycCalSheet = _caluclations.CalculateHealthNotes(dtMyc);
MargeMultipalSheetData(mycCalSheet);
DataTable dtOther = _connections.GetSheetData(fileName, ".xlsx", "Other", _utility.GetSheetColumns("HealthNotesColumns"));
DataTable otherCalSheet = _caluclations.CalculateHealthNotes(dtOther);
return MargeMultipalSheetData(otherCalSheet);
}
/// <summary>
/// Merge All the Sheet in one FIle
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public DataTable MargeMultipalSheetData(DataTable dt)
{
AllSheetHealthNotesData.Merge(dt);
AllSheetHealthNotesData.AcceptChanges();
return AllSheetHealthNotesData;
}
#region ScriptSheet
/// <summary>
/// Read Script File
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
public DataTable GetScriptFigureData(string fileName)
{
return _connections.GetSheetData(fileName, ".xlsx", "Scripts");
}
/// <summary>
/// getPharmaStoreName
/// </summary>
/// <param name="PharmaName"></param>
/// <param name="cwhFilterData"></param>
/// <returns></returns>
public DataTable getPharmaStoreName(string PharmaName, DataTable cwhFilterData)
{
return (from q in cwhFilterData.AsEnumerable()
where q.Field<string>("Pharmacy Name") == "Chemist Warehouse Adelaide Street Brisbane"
select q).CopyToDataTable();
}
#endregion
}
}
This diff is collapsed.
using System.Data;
namespace PharmaStoreReport.Common.Interface
{
/// <summary>
/// Interface cretion
/// </summary>
public interface ICWHService
{
/// <summary>
/// Get CWH Sheet Data
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
DataTable GetCWHSheetData(string fileName);
/// <summary>
/// Get Myc Sheet Data
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
DataTable GetMycsheetData(string fileName);
/// <summary>
/// Read Other Sheet Data
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
DataTable GetOthersheetData(string fileName);
/// <summary>
/// Read Health Note Data
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
DataTable GetHealthNotesData(string fileName);
/// <summary>
/// Merge Multiple Sheets in one document
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
DataTable MargeMultipalSheetData(DataTable dt);
/// <summary>
/// Reading Script sheet data
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
DataTable GetScriptFigureData(string fileName);
/// <summary>
/// getPharmaStoreName
/// </summary>
/// <param name="PharmaName"></param>
/// <param name="cwhFilterData"></param>
/// <returns></returns>
DataTable getPharmaStoreName(string PharmaName, DataTable cwhFilterData);
}
}
using System.Data;
namespace PharmaStoreReport.Common.Interface
{
/// <summary>
/// Interface creation
/// </summary>
public interface ICaluclations
{
/// <summary>
/// Calculation
/// </summary>
/// <param name="cwhData"></param>
/// <returns></returns>
DataTable CalculateHealthNotes(DataTable cwhData);
/// <summary>
/// Calculate Script Figure File
/// </summary>
/// <param name="cwhData"></param>
/// <param name="ScriptData"></param>
/// <returns></returns>
DataTable CalculateScriptFigure(DataTable cwhData, DataTable ScriptData);
/// <summary>
/// Calculare Total files
/// </summary>
/// <param name="scriptData"></param>
/// <param name="storereportsData"></param>
/// <returns></returns>
DataTable GetFinalCalculatedCWHData(DataTable scriptData, DataTable storereportsData);
}
}

using System.Collections.Generic;
using System.Data;
namespace PharmaStoreReport.Common.Interface
{
public interface IUtility
{
/// <summary>
/// Get Sheet Column Names from config
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
string GetColumnsNameFromConfig(string name);
/// <summary>
/// Split comma seperated columns in List of string
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
List<string> GetSheetColumns(string fileName);
/// <summary>
/// Get SheetName from configuration
/// </summary>
/// <param name="sheetName"></param>
/// <returns></returns>
string GetSheetNameFromConfig(string sheetName);
/// <summary>
/// Read all Austrilla states
/// </summary>
/// <returns></returns>
List<string> GetStates();
/// <summary>
/// Remove BrandHeaders frim datatable
/// </summary>
/// <param name="headerName"></param>
/// <param name="SheetBrandData"></param>
/// <returns></returns>
DataTable RemoveBrandHeaderFromDT(string headerName, DataTable SheetBrandData);
/// <summary>
/// Remove all matched brand headers from data table
/// </summary>
/// <param name="headerName"></param>
/// <param name="SheetBrandData"></param>
/// <returns></returns>
DataTable RemoveAllBrandHeaderFromDT(string headerName, DataTable SheetBrandData);
/// <summary>
/// Convert list to Datatable
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="items"></param>
/// <returns></returns>
DataTable ToDataTable<T>(List<T> items);
/// <summary>
/// Create Pharama Report sheet
/// </summary>
/// <param name="Data"></param>
/// <param name="SheetName"></param>
/// <param name="FolderName"></param>
/// <param name="SubFolderName"></param>
/// <returns></returns>
bool CreateExcel(DataTable Data, string SheetName, string FolderName, string SubFolderName);
/// <summary>
/// Create MYC and other report Sheets
/// </summary>
/// <param name="Data"></param>
/// <param name="SheetName"></param>
/// <param name="FolderName"></param>
/// <param name="SubFolderName"></param>
/// <returns></returns>
bool CreateMYCAndOtherExcel(DataTable Data, string SheetName, string FolderName, string SubFolderName);
/// <summary>
/// Check health header exists or not
/// </summary>
/// <param name="filePath"></param>
/// <param name="sheetName"></param>
/// <returns></returns>
List<string> IsHealthHeaderExist(string filePath, string sheetName);
/// <summary>
/// Chekc Store Report headers exists or not
/// </summary>
/// <param name="filePath"></param>
/// <param name="sheetName"></param>
/// <returns></returns>
List<string> IsStoreRportNumberHeaderExist(string filePath, string sheetName);
/// <summary>
/// Check Script sheet headers or exists or not
/// </summary>
/// <param name="filePath"></param>
/// <param name="sheetName"></param>
/// <returns></returns>
List<string> IsScriptHeaderExist(string filePath, string sheetName);
/// <summary>
/// Check Sheet Name exists or not
/// </summary>
/// <param name="sheetName"></param>
/// <returns></returns>
string IsSheetName(string sheetName);
/// <summary>
/// Check Sheet Names Matched Or not
/// </summary>
/// <param name="filePath"></param>
/// <param name="sheetName"></param>
/// <returns></returns>
bool CheckSheetNames(string filePath, string sheetName);
/// <summary>
/// Check the compatablity of version
/// </summary>
/// <param name="filePah"></param>
/// <returns></returns>
string ISCompatable(string filePah);
}
}
\ No newline at end of file
This diff is collapsed.
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using PharmaStoreReport.Common.Interface;
using PharmaStoreReport.Models;
using PharmaStoreReport.NLogConfig.Logging;
using PharmaStoreReport.SqlHelper;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
namespace PharmaStoreReport.Controllers
{
public class HomeController : Controller
{
/// <summary>
///Members Initilizatios
/// </summary>
private readonly IConnections _connections;
private readonly ICaluclations _caluclations;
private readonly IUtility _utility;
private readonly ILog _log;
/// <summary>
/// Controller Constructor
/// </summary>
/// <param name="connections"></param>
/// <param name="caluclations"></param>
/// <param name="utility"></param>
/// <param name="log"></param>
public HomeController(IConnections connections, ICaluclations caluclations, IUtility utility, LogNLog log)
{
this._connections = connections;
this._caluclations = caluclations;
this._utility = utility;
this._log = log;
}
public IActionResult Index()
{
//Years Binding
HomeModel model = new HomeModel();
for (int i = 1; i >= 0; i--)
{
model.Years.Add(new Microsoft.AspNetCore.Mvc.Rendering.SelectListItem
{
Text = (DateTime.Today.Year - i).ToString(),
Value = (DateTime.Today.Year - i).ToString()
});
}
return View();
}
public IActionResult Privacy()
{
return View();
}
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error()
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
}
}
using System;
namespace PharmaStoreReport.Models
{
/// <summary>
/// Error view Model
/// </summary>
public class ErrorViewModel
{
/// <summary>
/// Requestid
/// </summary>
public string RequestId { get; set; }
/// <summary>
/// Request id
/// </summary>
public bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
}
}
using Microsoft.AspNetCore.Mvc.Rendering;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Threading.Tasks;
namespace PharmaStoreReport.Models
{
/// <summary>
/// Home Page Model
/// </summary>
public class HomeModel
{
/// <summary>
/// Years Dropdown
/// </summary>
public List<SelectListItem> Years { get; set; }
}
/// <summary>
/// FileDetails Model
/// </summary>
public class FileDetails
{
/// <summary>
/// File No
/// </summary>
public int FileNO { get; set; }
/// <summary>
/// File name
/// </summary>
[DisplayName("File Name")]
public string FileName { get; set; }
/// <summary>
/// File Path
/// </summary>
public string FilePath { get; set; }
}
}
using Microsoft.AspNetCore.Diagnostics;
using System;
namespace PharmaStoreReport.NLogConfig.Logging
{
/// <summary>
/// Log error Interface
/// </summary>
public interface ILog
{
/// <summary>
/// Error message login path
/// </summary>
/// <param name="Path"></param>
/// <param name="exceptionHandlerFeature"></param>
void Error(string Path, IExceptionHandlerFeature exceptionHandlerFeature);
/// <summary>
/// Log th exception
/// </summary>
/// <param name="ActionName"></param>
/// <param name="ControllerName"></param>
/// <param name="exception"></param>
void LogException(string ActionName, string ControllerName, Exception exception);
/// <summary>
/// Log the Message
/// </summary>
/// <param name="ActionName"></param>
/// <param name="ControllerName"></param>
/// <param name="Message"></param>
void LogMessage(string ActionName, string ControllerName, string Message);
/// <summary>
/// log Error URl
/// </summary>
/// <param name="Path"></param>
/// <param name="statusCodeReExecuteFeature"></param>
void ErrorUrl(string Path, IStatusCodeReExecuteFeature statusCodeReExecuteFeature);
}
}
using Microsoft.AspNetCore.Diagnostics;
using NLog;
using System;
namespace PharmaStoreReport.NLogConfig.Logging
{
/// <summary>
/// Log Implementation for the error messages
/// </summary>
public class LogNLog : ILog
{
/// <summary>
/// Creating logger
/// </summary>
private readonly ILogger logger = LogManager.GetCurrentClassLogger();
/// <summary>
/// Error message write
/// </summary>
/// <param name="message"></param>
public void Error(string Path, IExceptionHandlerFeature exceptionHandlerFeature)
{
System.Text.StringBuilder sbLog = new System.Text.StringBuilder();
sbLog.AppendLine($"Something went wrong");
sbLog.AppendLine("URL: " + Path);
sbLog.AppendLine("Time: " + System.DateTime.Now.ToString());
sbLog.AppendLine("Inner Exception: " + (exceptionHandlerFeature.Error.InnerException));
sbLog.AppendLine("Message: " + (exceptionHandlerFeature.Error.Message));
sbLog.AppendLine("Exception: " + exceptionHandlerFeature.Error.StackTrace);
sbLog.AppendLine("=================================================================================");
logger.Error($"{sbLog}");
}
/// <summary>
/// Log the exception message
/// </summary>
/// <param name="ActionName"></param>
/// <param name="ControllerName"></param>
/// <param name="exception"></param>
public void LogException(string ActionName, string ControllerName, Exception exception)
{
System.Text.StringBuilder sbLog = new System.Text.StringBuilder();
sbLog.AppendLine($"Something went wrong");
sbLog.AppendLine("ActionName: " + ActionName);
sbLog.AppendLine("ControllerName: " + ControllerName);
sbLog.AppendLine("Time: " + System.DateTime.Now.ToString());
sbLog.AppendLine("Inner Exception: " + (exception.InnerException));
sbLog.AppendLine("Message: " + (exception.Message));
sbLog.AppendLine("Exception: " + exception.StackTrace);
sbLog.AppendLine("=================================================================================");
logger.Error($"{sbLog}");
}
/// <summary>
/// Log message
/// </summary>
/// <param name="ActionName"></param>
/// <param name="ControllerName"></param>
/// <param name="Message"></param>
public void LogMessage(string ActionName, string ControllerName, string Message)
{
System.Text.StringBuilder sbLog = new System.Text.StringBuilder();
sbLog.AppendLine($"Something went wrong");
sbLog.AppendLine("ActionName: " + ActionName);
sbLog.AppendLine("ControllerName: " + ControllerName);
sbLog.AppendLine("Time: " + System.DateTime.Now.ToString());
sbLog.AppendLine("Message: " + (Message));
sbLog.AppendLine("=================================================================================");
logger.Error($"{sbLog}");
}
/// <summary>
/// Log error Url
/// </summary>
/// <param name="Path"></param>
/// <param name="statusCodeReExecuteFeature"></param>
public void ErrorUrl(string Path, IStatusCodeReExecuteFeature statusCodeReExecuteFeature)
{
System.Text.StringBuilder sbLog = new System.Text.StringBuilder();
sbLog.AppendLine($"Something went wrong");
sbLog.AppendLine("URL: " + Path);
sbLog.AppendLine("Time: " + System.DateTime.Now.ToString());
sbLog.AppendLine("OriginalPath: " + (statusCodeReExecuteFeature.OriginalPath));
sbLog.AppendLine("OriginalPathBase: " + (statusCodeReExecuteFeature.OriginalPathBase));
sbLog.AppendLine("OriginalQueryString: " + statusCodeReExecuteFeature.OriginalQueryString);
sbLog.AppendLine("=================================================================================");
logger.Error($"{sbLog}");
}
}
}
\ No newline at end of file
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="EPPlus" Version="5.5.2" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="5.0.0" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
<PackageReference Include="NLog" Version="4.7.7" />
<PackageReference Include="System.Data.OleDb" Version="5.0.0" />
</ItemGroup>
<ItemGroup>
<Folder Include="Log\" />
</ItemGroup>
</Project>
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace PharmaStoreReport
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
}
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:4379",
"sslPort": 44322
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"PharmaStoreReport": {
"commandName": "Project",
"dotnetRunMessages": "true",
"launchBrowser": true,
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
This diff is collapsed.
using PharmaStoreReport.Common.Interface;
using PharmaStoreReport.NLogConfig.Logging;
using PharmaStoreReport.Services.Interface;
using PharmaStoreReport.SqlHelper;
using System;
using System.Data;
namespace PharmaStoreReport.Services
{
/// <summary>
/// Health Notes sheet handling
/// </summary>
public class AmsHealthNotesService: IAmsHealthNotesService
{
/// <summary>
/// Member initionalized
/// </summary>
private readonly IConnections _connections;
private readonly ICaluclations _caluclations;
private readonly IUtility _utility;
private readonly ILog _log;
/// <summary>
/// Constructor
/// </summary>
/// <param name="connections"></param>
/// <param name="caluclations"></param>
/// <param name="utility"></param>
/// <param name="log"></param>
public AmsHealthNotesService(IConnections connections, ICaluclations caluclations, IUtility utility, LogNLog log)
{
this._connections = connections;
this._caluclations = caluclations;
this._utility = utility;
this._log = log;
}
/// <summary>
/// GetCWHSheetData
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
public DataTable GetCWHSheetData(string fileName)
{
DataTable dtCwh = new DataTable();
try
{
DataTable data = _connections.GetSheetData(fileName, ".xlsx", "CWH", _utility.GetSheetColumns("HealthNotesColumns"));
if (data != null && data.Rows.Count > 0)
{
dtCwh = _caluclations.CalculateHealthNotes(data);
}
}
catch (Exception ex)
{
_log.LogException(fileName, fileName, ex);
}
return dtCwh;
}
/// <summary>
/// GetMycsheetData
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
public DataTable GetMycsheetData(string fileName)
{
DataTable calhealth = new DataTable();
try
{
DataTable dtMYC = _connections.GetSheetData(fileName, ".xlsx", "My Chemist", _utility.GetSheetColumns("HealthNotesColumns"));
if (dtMYC != null && dtMYC.Rows.Count > 0)
{
calhealth = _caluclations.CalculateHealthNotes(dtMYC);
}
}
catch (Exception ex)
{
_log.LogException(fileName, fileName, ex);
}
return calhealth;
}
/// <summary>
/// GetOthersheetData
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
public DataTable GetOthersheetData(string fileName)
{
DataTable dt = new DataTable();
try
{
DataTable dtother = _connections.GetSheetData(fileName, ".xlsx", "Other", _utility.GetSheetColumns("HealthNotesColumns"));
if (dtother != null && dtother.Rows.Count > 0)
{
dt = _caluclations.CalculateHealthNotes(dtother);
}
}
catch (Exception ex)
{
_log.LogException(fileName, fileName, ex);
}
return dt;
}
/// <summary>
/// GetCWHHealthNotesData
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
public DataTable GetCWHHealthNotesData(string fileName)
{
DataTable cwhCalSheet = new DataTable();
try
{
DataTable dtCwh = _connections.GetSheetData(fileName, ".xlsx", "CWH", _utility.GetSheetColumns("HealthNotesColumns"));
if (dtCwh != null && dtCwh.Rows.Count > 0)
{
cwhCalSheet = _caluclations.CalculateHealthNotes(dtCwh);
}
}
catch (Exception ex)
{
_log.LogException(fileName, fileName, ex);
}
return cwhCalSheet;
}
}
}
\ No newline at end of file
This diff is collapsed.
using System.Data;
namespace PharmaStoreReport.Services.Interface
{
/// <summary>
/// Interface Start
/// </summary>
public interface IAMSStoreReportNumberService
{
/// <summary>
/// Store Report data
/// </summary>
/// <param name="fileName"></param>
/// <param name="scriptData"></param>
/// <returns></returns>
DataTable GetStoreReportData(string fileName, DataTable scriptData);
/// <summary>
/// Final CWR Sheet Preparation
/// </summary>
/// <param name="scriptData"></param>
/// <param name="storereportData"></param>
/// <returns></returns>
DataTable GetFinalCwhData(DataTable scriptData, DataTable storereportData);
/// <summary>
/// Datatales with Linq operations
/// </summary>
/// <param name="dt1"></param>
/// <param name="dt2"></param>
/// <returns></returns>
DataTable getLinq(DataTable dt1, DataTable dt2);
/// <summary>
/// Data Tables Linq Operations
/// </summary>
/// <param name="dt1"></param>
/// <param name="dt2"></param>
/// <returns></returns>
DataTable getDataLinq(DataTable dt1, DataTable dt2);
}
}
using System.Data;
namespace PharmaStoreReport.Services.Interface
{
public interface IAmsHealthNotesService
{
/// <summary>
/// GetCWHSheetData
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
DataTable GetCWHSheetData(string fileName);
/// <summary>
/// GetMycsheetData
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
DataTable GetMycsheetData(string fileName);
/// <summary>
/// GetOthersheetData
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
DataTable GetOthersheetData(string fileName);
/// <summary>
/// GetCWHHealthNotesData
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
DataTable GetCWHHealthNotesData(string fileName);
}
}
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
namespace PharmaStoreReport.Services.Interface
{
public interface IAmsScriptFigureService
{
/// <summary>
/// GetScriptSheet
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
DataTable GetScriptSheet(string fileName);
/// <summary>
/// GetCWHScriptFigureData
/// </summary>
/// <param name="fileName"></param>
/// <param name="healthNotes"></param>
/// <returns></returns>
DataTable GetCWHScriptFigureData(string fileName, DataTable healthNotes);
/// <summary>
/// GetMYCScriptFigureData
/// </summary>
/// <param name="fileName"></param>
/// <param name="healthNotes"></param>
/// <returns></returns>
DataTable GetMYCScriptFigureData(string fileName, DataTable healthNotes);
/// <summary>
/// GetOtherScriptFigureData
/// </summary>
/// <param name="fileName"></param>
/// <param name="healthNotes"></param>
/// <returns></returns>
DataTable GetOtherScriptFigureData(string fileName, DataTable healthNotes);
/// <summary>
/// getLinq
/// </summary>
/// <param name="dt1"></param>
/// <param name="dt2"></param>
/// <returns></returns>
DataTable getLinq(DataTable dt1, DataTable dt2);
/// <summary>
/// getDataLinq
/// </summary>
/// <param name="dt1"></param>
/// <param name="dt2"></param>
/// <returns></returns>
DataTable getDataLinq(DataTable dt1, DataTable dt2);
/// <summary>
/// GetScriptFigureDta
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
DataTable GetScriptFigureDta(string fileName);
}
}
using Microsoft.Extensions.Configuration;
using PharmaStoreReport.Common;
using PharmaStoreReport.Common.Interface;
using PharmaStoreReport.NLogConfig.Logging;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
using System.Linq;
using System.Threading.Tasks;
namespace PharmaStoreReport.SqlHelper
{
public class Connections : IConnections
{
/// <summary>
/// member initialization
/// </summary>
private readonly ILog _log;
private readonly IUtility _utility;
/// <summary>
/// Constructor of Connection
/// </summary>
/// <param name="log"></param>
/// <param name="utility"></param>
public Connections(LogNLog log, IUtility utility)
{
_log = log;
_utility = utility;
}
/// <summary>
/// Read Excel Sheets
/// </summary>
/// <param name="fileName"></param>
/// <param name="fileExt"></param>
/// <param name="sheetName"></param>
/// <param name="ColumnName"></param>
/// <returns></returns>
public DataTable GetSheetData(string fileName, string fileExt, string sheetName, List<string> ColumnName)
{
DataTable dtexcel = new DataTable();
try
{
string conn = string.Empty;
if (fileExt.CompareTo(".xlsx") == 0)
{
conn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties='Excel 12.0;HDR=Yes';"; //for above excel 2007
using (OleDbConnection con = new OleDbConnection(conn))
{
try
{
//here we read data from sheetName
OleDbDataAdapter oleAdpt = new OleDbDataAdapter("select " + string.Join(",", ColumnName) + " from [" + sheetName + "$]", con);
oleAdpt.Fill(dtexcel);
}
catch (OleDbException ex)
{
_log.LogException("OleDb Exception", "GetSheetData()", ex);
}
catch (Exception ex)
{
_log.LogException("Exception", "GetSheetData()", ex);
}
}
}
}
catch (Exception ex)
{
_log.LogException("file not match Exception", "GetSheetData()", ex);
}
return dtexcel;
}
/// <summary>
/// GetSheetData
/// </summary>
/// <param name="fileName"></param>
/// <param name="fileExt"></param>
/// <param name="sheetName"></param>
/// <returns></returns>
public DataTable GetSheetData(string fileName, string fileExt, string sheetName)
{
DataTable dtexcel = new DataTable();
try
{
string conn = string.Empty;
if (fileExt.CompareTo(".xlsx") == 0)
{
//for above excel 2007
conn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties='Excel 12.0;HDR=Yes';";
using (OleDbConnection con = new OleDbConnection(conn))
{
try
{
//here we read data from sheetNam
OleDbDataAdapter oleAdpt = new OleDbDataAdapter("select * from [" + sheetName + "$] ", con);
oleAdpt.Fill(dtexcel);
}
catch (OleDbException ex)
{
_log.LogException("OleDb Exception", "GetSheetData()", ex);
}
catch (Exception ex)
{
_log.LogException("Exception", "GetSheetData()", ex);
}
}
}
}
catch (Exception ex)
{
_log.LogException("file not match Exception", "GetSheetData()", ex);
}
return dtexcel;
}
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
namespace PharmaStoreReport.SqlHelper
{
/// <summary>
/// Oledb Connection
/// </summary>
public interface IConnections
{
/// <summary>
/// Reading Sheet Data
/// </summary>
/// <param name="fileName"></param>
/// <param name="fileExt"></param>
/// <param name="sheetName"></param>
/// <returns></returns>
DataTable GetSheetData(string fileName, string fileExt, string sheetName);
/// <summary>
/// Get Sheet Data by Column Names
/// </summary>
/// <param name="fileName"></param>
/// <param name="fileExt"></param>
/// <param name="sheetName"></param>
/// <param name="ColumnName"></param>
/// <returns></returns>
DataTable GetSheetData(string fileName, string fileExt, string sheetName, List<string> ColumnName);
}
}
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using PharmaStoreReport.Common;
using PharmaStoreReport.Common.Interface;
using PharmaStoreReport.NLogConfig.Logging;
using PharmaStoreReport.SqlHelper;
using System;
namespace PharmaStoreReport
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddHsts(options =>
{
options.IncludeSubDomains = true;
options.Preload = true;
options.MaxAge = TimeSpan.FromDays(120);
});
services.AddAntiforgery(options =>
{
/// Set Cookie properties using CookieBuilder properties.
options.HeaderName = "X-CSRF-TOKEN-HEADERNAME";
options.Cookie.Name = "X-CSRF-TOKEN-VERIFICATION";
/// Access Request Verification Token
options.FormFieldName = "RequestVerificationToken";
options.SuppressXFrameOptionsHeader = false;
});
services.AddDistributedMemoryCache();
services.AddMemoryCache();
services.AddControllersWithViews();
services.AddSingleton<ILog, LogNLog>();
services.AddScoped<IUtility, Utility>();
services.AddScoped<IConnections, Connections>();
services.AddScoped<ICWHService, CWHService>();
services.AddScoped<ICaluclations, Caluclations>();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILog logger)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
}
}
@{
ViewData["Title"] = "Home Page";
}
<div class="text-center">
<h1 class="display-4">Welcome</h1>
<p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>
@{
ViewData["Title"] = "Privacy Policy";
}
<h1>@ViewData["Title"]</h1>
<p>Use this page to detail your site's privacy policy.</p>
@model ErrorViewModel
@{
ViewData["Title"] = "Error";
}
<h1 class="text-danger">Error.</h1>
<h2 class="text-danger">An error occurred while processing your request.</h2>
@if (Model.ShowRequestId)
{
<p>
<strong>Request ID:</strong> <code>@Model.RequestId</code>
</p>
}
<h3>Development Mode</h3>
<p>
Swapping to <strong>Development</strong> environment will display more detailed information about the error that occurred.
</p>
<p>
<strong>The Development environment shouldn't be enabled for deployed applications.</strong>
It can result in displaying sensitive information from exceptions to end users.
For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
and restarting the app.
</p>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"] - PharmaStoreReport</title>
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
<link rel="stylesheet" href="~/css/site.css" />
</head>
<body>
<header>
<nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
<div class="container">
<a class="navbar-brand" asp-area="" asp-controller="Home" asp-action="Index">PharmaStoreReport</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".navbar-collapse" aria-controls="navbarSupportedContent"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
<ul class="navbar-nav flex-grow-1">
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Index">Home</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
</li>
</ul>
</div>
</div>
</nav>
</header>
<div class="container">
<main role="main" class="pb-3">
@RenderBody()
</main>
</div>
<footer class="border-top footer text-muted">
<div class="container">
&copy; 2021 - PharmaStoreReport - <a asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
</div>
</footer>
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>
@await RenderSectionAsync("Scripts", required: false)
</body>
</html>
<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
@using PharmaStoreReport
@using PharmaStoreReport.Models
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@{
Layout = "_Layout";
}
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AppSettings": {
"HealthNotesColumns": "[Pharmacy Name],[State],[Next Repeat Reminder],[Next Repeat Reminder - SOF],[Next Repeat Reminder - WebApp],[Overdue Reminder - Last repeat],[Overdue Reminder - Next repeat],[Owing script notification],[Promotion],[Welcome Message],[Total Messages]",
"ScriptFigureColumns": "[Scripts Actual],[]",
"StoreReportColumns": "[pharmacy_name],[Number_Of_Registered_Customers],[Number_Of_Active_Customers],[Scripts]",
"HealthNotesAllSheetName": "All",
"HealthNotesCWHSheetName": "CWH",
"HealthNotesMYCsheetName": "My Chemist",
"HealthNotesOtherSheetName": "Other",
"ScriptFigureSheetName": "Scripts",
"StoreReportSheetName": "Script Wise Report"
}
}
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"AppSettings": {
"HealthNotesColumns": "[Pharmacy Name],[State],[Next Repeat Reminder],[Next Repeat Reminder - SOF],[Next Repeat Reminder - WebApp],[Overdue Reminder - Last repeat],[Overdue Reminder - Next repeat],[Owing script notification],[Promotion],[Welcome Message],[Total Messages]",
"ScriptFigureColumns": "[Scripts Actual],[]",
"StoreReportColumns": "[pharmacy_name],[Number_Of_Registered_Customers],[Number_Of_Active_Customers],[Scripts]",
"HealthNotesAllSheetName": "All",
"HealthNotesCWHSheetName": "CWH",
"HealthNotesMYCsheetName": "My Chemist",
"HealthNotesOtherSheetName": "Other",
"ScriptFigureSheetName": "Scripts",
"StoreReportSheetName": "Script Wise Report"
}
}
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" autoReload="true"
internalLogLevel="Trace" internalLogFile="E:/HowProject/HowApi/20-03-2020/HowBooking_Api/Log\InnerLog.txt">
<extensions>
<add assembly="NLog.Extended" />
</extensions>
<targets>
<target name="logfile" xsi:type="File" fileName="${var:mydir}/Log/${shortdate}_log.txt"
layout="${longdate} ${level:uppercase=true} ${message}"/>
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="logfile" />
</rules>
</nlog>
</configuration>
\ No newline at end of file
/* Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification
for details on configuring this project to bundle and minify static web assets. */
a.navbar-brand {
white-space: normal;
text-align: center;
word-break: break-all;
}
/* Provide sufficient contrast against white background */
a {
color: #0366d6;
}
.btn-primary {
color: #fff;
background-color: #1b6ec2;
border-color: #1861ac;
}
.nav-pills .nav-link.active, .nav-pills .show > .nav-link {
color: #fff;
background-color: #1b6ec2;
border-color: #1861ac;
}
/* Sticky footer styles
-------------------------------------------------- */
html {
font-size: 14px;
}
@media (min-width: 768px) {
html {
font-size: 16px;
}
}
.border-top {
border-top: 1px solid #e5e5e5;
}
.border-bottom {
border-bottom: 1px solid #e5e5e5;
}
.box-shadow {
box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .05);
}
button.accept-policy {
font-size: 1rem;
line-height: inherit;
}
/* Sticky footer styles
-------------------------------------------------- */
html {
position: relative;
min-height: 100%;
}
body {
/* Margin bottom by footer height */
margin-bottom: 60px;
}
.footer {
position: absolute;
bottom: 0;
width: 100%;
white-space: nowrap;
line-height: 60px; /* Vertically center the text there */
}
PharmaStoreReport/wwwroot/favicon.ico

5.3 KB

// Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification
// for details on configuring this project to bundle and minify static web assets.
// Write your JavaScript code.
The MIT License (MIT)
Copyright (c) 2011-2018 Twitter, Inc.
Copyright (c) 2011-2018 The Bootstrap Authors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
/*!
* Bootstrap Reboot v4.3.1 (https://getbootstrap.com/)
* Copyright 2011-2019 The Bootstrap Authors
* Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/
*,
*::before,
*::after {
box-sizing: border-box;
}
html {
font-family: sans-serif;
line-height: 1.15;
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
article, aside, figcaption, figure, footer, header, hgroup, main, nav, section {
display: block;
}
body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-size: 1rem;
font-weight: 400;
line-height: 1.5;
color: #212529;
text-align: left;
background-color: #fff;
}
[tabindex="-1"]:focus {
outline: 0 !important;
}
hr {
box-sizing: content-box;
height: 0;
overflow: visible;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 0;
margin-bottom: 0.5rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title],
abbr[data-original-title] {
text-decoration: underline;
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
border-bottom: 0;
-webkit-text-decoration-skip-ink: none;
text-decoration-skip-ink: none;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: .5rem;
margin-left: 0;
}
blockquote {
margin: 0 0 1rem;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 80%;
}
sub,
sup {
position: relative;
font-size: 75%;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -.25em;
}
sup {
top: -.5em;
}
a {
color: #007bff;
text-decoration: none;
background-color: transparent;
}
a:hover {
color: #0056b3;
text-decoration: underline;
}
a:not([href]):not([tabindex]) {
color: inherit;
text-decoration: none;
}
a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {
color: inherit;
text-decoration: none;
}
a:not([href]):not([tabindex]):focus {
outline: 0;
}
pre,
code,
kbd,
samp {
font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
font-size: 1em;
}
pre {
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
}
figure {
margin: 0 0 1rem;
}
img {
vertical-align: middle;
border-style: none;
}
svg {
overflow: hidden;
vertical-align: middle;
}
table {
border-collapse: collapse;
}
caption {
padding-top: 0.75rem;
padding-bottom: 0.75rem;
color: #6c757d;
text-align: left;
caption-side: bottom;
}
th {
text-align: inherit;
}
label {
display: inline-block;
margin-bottom: 0.5rem;
}
button {
border-radius: 0;
}
button:focus {
outline: 1px dotted;
outline: 5px auto -webkit-focus-ring-color;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
input {
overflow: visible;
}
button,
select {
text-transform: none;
}
select {
word-wrap: normal;
}
button,
[type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
}
button:not(:disabled),
[type="button"]:not(:disabled),
[type="reset"]:not(:disabled),
[type="submit"]:not(:disabled) {
cursor: pointer;
}
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
padding: 0;
border-style: none;
}
input[type="radio"],
input[type="checkbox"] {
box-sizing: border-box;
padding: 0;
}
input[type="date"],
input[type="time"],
input[type="datetime-local"],
input[type="month"] {
-webkit-appearance: listbox;
}
textarea {
overflow: auto;
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
display: block;
width: 100%;
max-width: 100%;
padding: 0;
margin-bottom: .5rem;
font-size: 1.5rem;
line-height: inherit;
color: inherit;
white-space: normal;
}
progress {
vertical-align: baseline;
}
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
[type="search"] {
outline-offset: -2px;
-webkit-appearance: none;
}
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
summary {
display: list-item;
cursor: pointer;
}
template {
display: none;
}
[hidden] {
display: none !important;
}
/*# sourceMappingURL=bootstrap-reboot.css.map */
\ No newline at end of file
/*!
* Bootstrap Reboot v4.3.1 (https://getbootstrap.com/)
* Copyright 2011-2019 The Bootstrap Authors
* Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}
/*# sourceMappingURL=bootstrap-reboot.min.css.map */
\ No newline at end of file
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
Copyright (c) .NET Foundation. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
these files except in compliance with the License. You may obtain a copy of the
License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed
under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
CONDITIONS OF ANY KIND, either express or implied. See the License for the
specific language governing permissions and limitations under the License.
// Unobtrusive validation support library for jQuery and jQuery Validate
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
// @version v3.2.11
!function(a){"function"==typeof define&&define.amd?define("jquery.validate.unobtrusive",["jquery-validation"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery-validation")):jQuery.validator.unobtrusive=a(jQuery)}(function(a){function e(a,e,n){a.rules[e]=n,a.message&&(a.messages[e]=a.message)}function n(a){return a.replace(/^\s+|\s+$/g,"").split(/\s*,\s*/g)}function t(a){return a.replace(/([!"#$%&'()*+,.\/:;<=>?@\[\\\]^`{|}~])/g,"\\$1")}function r(a){return a.substr(0,a.lastIndexOf(".")+1)}function i(a,e){return 0===a.indexOf("*.")&&(a=a.replace("*.",e)),a}function o(e,n){var r=a(this).find("[data-valmsg-for='"+t(n[0].name)+"']"),i=r.attr("data-valmsg-replace"),o=i?a.parseJSON(i)!==!1:null;r.removeClass("field-validation-valid").addClass("field-validation-error"),e.data("unobtrusiveContainer",r),o?(r.empty(),e.removeClass("input-validation-error").appendTo(r)):e.hide()}function d(e,n){var t=a(this).find("[data-valmsg-summary=true]"),r=t.find("ul");r&&r.length&&n.errorList.length&&(r.empty(),t.addClass("validation-summary-errors").removeClass("validation-summary-valid"),a.each(n.errorList,function(){a("<li />").html(this.message).appendTo(r)}))}function s(e){var n=e.data("unobtrusiveContainer");if(n){var t=n.attr("data-valmsg-replace"),r=t?a.parseJSON(t):null;n.addClass("field-validation-valid").removeClass("field-validation-error"),e.removeData("unobtrusiveContainer"),r&&n.empty()}}function l(e){var n=a(this),t="__jquery_unobtrusive_validation_form_reset";if(!n.data(t)){n.data(t,!0);try{n.data("validator").resetForm()}finally{n.removeData(t)}n.find(".validation-summary-errors").addClass("validation-summary-valid").removeClass("validation-summary-errors"),n.find(".field-validation-error").addClass("field-validation-valid").removeClass("field-validation-error").removeData("unobtrusiveContainer").find(">*").removeData("unobtrusiveContainer")}}function u(e){var n=a(e),t=n.data(v),r=a.proxy(l,e),i=f.unobtrusive.options||{},u=function(n,t){var r=i[n];r&&a.isFunction(r)&&r.apply(e,t)};return t||(t={options:{errorClass:i.errorClass||"input-validation-error",errorElement:i.errorElement||"span",errorPlacement:function(){o.apply(e,arguments),u("errorPlacement",arguments)},invalidHandler:function(){d.apply(e,arguments),u("invalidHandler",arguments)},messages:{},rules:{},success:function(){s.apply(e,arguments),u("success",arguments)}},attachValidation:function(){n.off("reset."+v,r).on("reset."+v,r).validate(this.options)},validate:function(){return n.validate(),n.valid()}},n.data(v,t)),t}var m,f=a.validator,v="unobtrusiveValidation";return f.unobtrusive={adapters:[],parseElement:function(e,n){var t,r,i,o=a(e),d=o.parents("form")[0];d&&(t=u(d),t.options.rules[e.name]=r={},t.options.messages[e.name]=i={},a.each(this.adapters,function(){var n="data-val-"+this.name,t=o.attr(n),s={};void 0!==t&&(n+="-",a.each(this.params,function(){s[this]=o.attr(n+this)}),this.adapt({element:e,form:d,message:t,params:s,rules:r,messages:i}))}),a.extend(r,{__dummy__:!0}),n||t.attachValidation())},parse:function(e){var n=a(e),t=n.parents().addBack().filter("form").add(n.find("form")).has("[data-val=true]");n.find("[data-val=true]").each(function(){f.unobtrusive.parseElement(this,!0)}),t.each(function(){var a=u(this);a&&a.attachValidation()})}},m=f.unobtrusive.adapters,m.add=function(a,e,n){return n||(n=e,e=[]),this.push({name:a,params:e,adapt:n}),this},m.addBool=function(a,n){return this.add(a,function(t){e(t,n||a,!0)})},m.addMinMax=function(a,n,t,r,i,o){return this.add(a,[i||"min",o||"max"],function(a){var i=a.params.min,o=a.params.max;i&&o?e(a,r,[i,o]):i?e(a,n,i):o&&e(a,t,o)})},m.addSingleVal=function(a,n,t){return this.add(a,[n||"val"],function(r){e(r,t||a,r.params[n])})},f.addMethod("__dummy__",function(a,e,n){return!0}),f.addMethod("regex",function(a,e,n){var t;return!!this.optional(e)||(t=new RegExp(n).exec(a),t&&0===t.index&&t[0].length===a.length)}),f.addMethod("nonalphamin",function(a,e,n){var t;return n&&(t=a.match(/\W/g),t=t&&t.length>=n),t}),f.methods.extension?(m.addSingleVal("accept","mimtype"),m.addSingleVal("extension","extension")):m.addSingleVal("extension","extension","accept"),m.addSingleVal("regex","pattern"),m.addBool("creditcard").addBool("date").addBool("digits").addBool("email").addBool("number").addBool("url"),m.addMinMax("length","minlength","maxlength","rangelength").addMinMax("range","min","max","range"),m.addMinMax("minlength","minlength").addMinMax("maxlength","minlength","maxlength"),m.add("equalto",["other"],function(n){var o=r(n.element.name),d=n.params.other,s=i(d,o),l=a(n.form).find(":input").filter("[name='"+t(s)+"']")[0];e(n,"equalTo",l)}),m.add("required",function(a){"INPUT"===a.element.tagName.toUpperCase()&&"CHECKBOX"===a.element.type.toUpperCase()||e(a,"required",!0)}),m.add("remote",["url","type","additionalfields"],function(o){var d={url:o.params.url,type:o.params.type||"GET",data:{}},s=r(o.element.name);a.each(n(o.params.additionalfields||o.element.name),function(e,n){var r=i(n,s);d.data[r]=function(){var e=a(o.form).find(":input").filter("[name='"+t(r)+"']");return e.is(":checkbox")?e.filter(":checked").val()||e.filter(":hidden").val()||"":e.is(":radio")?e.filter(":checked").val()||"":e.val()}}),e(o,"remote",d)}),m.add("password",["min","nonalphamin","regex"],function(a){a.params.min&&e(a,"minlength",a.params.min),a.params.nonalphamin&&e(a,"nonalphamin",a.params.nonalphamin),a.params.regex&&e(a,"regex",a.params.regex)}),m.add("fileextensions",["extensions"],function(a){e(a,"extension",a.params.extensions)}),a(function(){f.unobtrusive.parse(document)}),f.unobtrusive});
\ No newline at end of file
The MIT License (MIT)
=====================
Copyright Jörn Zaefferer
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
Copyright JS Foundation and other contributors, https://js.foundation/
This software consists of voluntary contributions made by many
individuals. For exact contribution history, see the revision history
available at https://github.com/jquery/jquery
The following license applies to all parts of this software except as
documented below:
====
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
====
All files located in the node_modules and external directories are
externally maintained libraries used by this software which have their
own licenses; we recommend you read them, as their terms may differ from
the terms above.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment