Commit e9408e1f by 陈宁

# dev RequestResource logic

parent 345abb21
**/.classpath
**/.dockerignore
**/.env
**/.git
**/.gitignore
**/.project
**/.settings
**/.toolstarget
**/.vs
**/.vscode
**/*.*proj.user
**/*.dbmdl
**/*.jfm
**/azds.yaml
**/bin
**/charts
**/docker-compose*
**/Dockerfile*
**/node_modules
**/npm-debug.log
**/obj
**/secrets.dev.yaml
**/values.dev.yaml
LICENSE
README.md
\ No newline at end of file
...@@ -26,3 +26,4 @@ logs/ ...@@ -26,3 +26,4 @@ logs/
node_modules/ node_modules/
.idea .idea
/Freemud.BE.Webportal/published
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Dynamic;
namespace Freemud.BE.Toolbox.Testing
{
[TestClass]
public class GeneralTest
{
[TestMethod]
public void MyTestMethod()
{
Console.WriteLine(ChannelEnum.Delivery);
Console.WriteLine(ChannelEnum.Delivery.ToString());
Console.WriteLine((int)ChannelEnum.Delivery);
Console.WriteLine(DateTime.Now);
Console.WriteLine(DateTime.Now.ToString());
Console.WriteLine(DateTime.Now.ToShortTimeString());
Console.WriteLine(DateTime.Now.ToShortDateString());
Console.WriteLine(DateTime.Now.ToLongTimeString());
Console.WriteLine(DateTime.Now.ToLongDateString());
}
[TestMethod]
public void alskdjalksjd()
{
var obj = getDynamic();
Console.WriteLine(obj.ToString());
Console.WriteLine(JsonConvert.SerializeObject(obj));
Console.WriteLine("obj is: " + JsonConvert.SerializeObject(obj));
}
private dynamic getDynamic()
{
dynamic obj = new ExpandoObject();
obj.name = "";
obj.age = 10;
obj.birthday = DateTime.Now;
return obj;
}
}
public enum ChannelEnum
{
/// <summary>
/// ͨ
/// </summary>
General = 0,
Pickup = 1,
Delivery = 2,
Kiosk = 3,
Mcoffee = 4
}
}
...@@ -2,6 +2,9 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; ...@@ -2,6 +2,9 @@ using Microsoft.VisualStudio.TestTools.UnitTesting;
using RestSharp; using RestSharp;
using System.Threading.Tasks; using System.Threading.Tasks;
using System; using System;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json;
namespace Freemud.BE.Toolbox.Testing namespace Freemud.BE.Toolbox.Testing
{ {
...@@ -17,5 +20,23 @@ namespace Freemud.BE.Toolbox.Testing ...@@ -17,5 +20,23 @@ namespace Freemud.BE.Toolbox.Testing
Console.WriteLine(response.Content); Console.WriteLine(response.Content);
} }
[TestMethod]
public void MyTestMethod()
{
var slpIds = new List<string>();
var orderProductIds = new List<string>();
var allIsSLP = slpIds.Any() && orderProductIds.Any() && orderProductIds.All(d => slpIds.Any(i => i.Equals(d)));
Console.WriteLine(JsonConvert.SerializeObject(slpIds));
Console.WriteLine(JsonConvert.SerializeObject(orderProductIds));
Console.WriteLine(allIsSLP);
}
[TestMethod]
public void aklsdjalksjd()
{
Console.WriteLine("");
}
} }
} }
...@@ -17,10 +17,16 @@ namespace Freemud.BE.Toolbox.WebApi.Controllers ...@@ -17,10 +17,16 @@ namespace Freemud.BE.Toolbox.WebApi.Controllers
this.requestResourceService = requestResourceService; this.requestResourceService = requestResourceService;
} }
[HttpPost("get-coupon-product")] [HttpPost("get-coupon-info")]
public async Task<IActionResult> GetCouponProduct([FromBody]GetCouponProductRequest request) public async Task<IActionResult> GetCouponInfo([FromBody]GetCouponInfoRequest request)
{ {
return Ok(data: await requestResourceService.GetCouponProduct(request)); return Ok(data: await requestResourceService.GetCouponInfo(request));
}
[HttpPost("get-product-info")]
public async Task<IActionResult> GetProductInfo([FromBody]GetProductInfoRequest request)
{
return Ok(data: await requestResourceService.GetProductInfo(request));
} }
} }
} }
...@@ -8,5 +8,7 @@ namespace Freemud.BE.Toolbox.WebApi.Model.Request ...@@ -8,5 +8,7 @@ namespace Freemud.BE.Toolbox.WebApi.Model.Request
public class BaseRequestResourceRequest public class BaseRequestResourceRequest
{ {
public string Env { get; set; } public string Env { get; set; }
public string Channel { get; set; }
} }
} }
...@@ -5,12 +5,10 @@ using System.Threading.Tasks; ...@@ -5,12 +5,10 @@ using System.Threading.Tasks;
namespace Freemud.BE.Toolbox.WebApi.Model.Request namespace Freemud.BE.Toolbox.WebApi.Model.Request
{ {
public class GetCouponProductRequest : BaseRequestResourceRequest public class GetCouponInfoRequest : BaseRequestResourceRequest
{ {
public string CouponCode { get; set; } public string CouponCode { get; set; }
public string StoreId { get; set; } public string StoreId { get; set; }
public string Channel { get; set; }
} }
} }
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Freemud.BE.Toolbox.WebApi.Model.Request
{
public class GetProductInfoRequest : BaseRequestResourceRequest
{
public string ProductId { get; set; }
public string StoreId { get; set; }
public DateTime Time { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Freemud.BE.Toolbox.WebApi.Model.Request
{
public class GetStoreByPositionRequest : BaseRequestResourceRequest
{
public long longitude { get; set; }
public long latitude { get; set; }
}
}
...@@ -9,6 +9,8 @@ namespace Freemud.BE.Toolbox.WebApi.Services ...@@ -9,6 +9,8 @@ namespace Freemud.BE.Toolbox.WebApi.Services
{ {
public interface IRequestResourceService public interface IRequestResourceService
{ {
Task<RequestResourceResponse> GetCouponProduct(GetCouponProductRequest request); Task<RequestResourceResponse> GetCouponInfo(GetCouponInfoRequest request);
Task<RequestResourceResponse> GetProductInfo(GetProductInfoRequest request);
} }
} }
...@@ -3,22 +3,25 @@ using Freemud.BE.Toolbox.WebApi.Model; ...@@ -3,22 +3,25 @@ using Freemud.BE.Toolbox.WebApi.Model;
using Freemud.BE.Toolbox.WebApi.Model.Constants; using Freemud.BE.Toolbox.WebApi.Model.Constants;
using Freemud.BE.Toolbox.WebApi.Model.Request; using Freemud.BE.Toolbox.WebApi.Model.Request;
using Freemud.BE.Toolbox.WebApi.Model.Response; using Freemud.BE.Toolbox.WebApi.Model.Response;
using RestSharp; using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net.Http;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace Freemud.BE.Toolbox.WebApi.Services namespace Freemud.BE.Toolbox.WebApi.Services
{ {
public class RequestResourceService : IRequestResourceService public class RequestResourceService : IRequestResourceService
{ {
private readonly ILogger<RequestResourceService> logger;
private readonly List<RequestResourceConfiguration> requestResources; private readonly List<RequestResourceConfiguration> requestResources;
public RequestResourceService(ToolboxConfiguration toolboxConfiguration) public RequestResourceService(ToolboxConfiguration toolboxConfiguration, ILogger<RequestResourceService> logger)
{ {
requestResources = toolboxConfiguration.RequestResources; this.logger = logger;
this.requestResources = toolboxConfiguration.RequestResources;
} }
private string GetUrl(string env, string group, string name) private string GetUrl(string env, string group, string name)
...@@ -48,7 +51,6 @@ namespace Freemud.BE.Toolbox.WebApi.Services ...@@ -48,7 +51,6 @@ namespace Freemud.BE.Toolbox.WebApi.Services
return $"{baseUrl}{path}"; return $"{baseUrl}{path}";
} }
private string GetChannelPartnerId(string channel) private string GetChannelPartnerId(string channel)
{ {
if (string.IsNullOrWhiteSpace(channel)) if (string.IsNullOrWhiteSpace(channel))
...@@ -67,7 +69,7 @@ namespace Freemud.BE.Toolbox.WebApi.Services ...@@ -67,7 +69,7 @@ namespace Freemud.BE.Toolbox.WebApi.Services
} }
} }
private string GetChannelUnifyId(string channel, string env = "") private string GetChannelUnifyId(string channel, string env)
{ {
if (string.IsNullOrWhiteSpace(channel)) if (string.IsNullOrWhiteSpace(channel))
return string.Empty; return string.Empty;
...@@ -90,55 +92,70 @@ namespace Freemud.BE.Toolbox.WebApi.Services ...@@ -90,55 +92,70 @@ namespace Freemud.BE.Toolbox.WebApi.Services
} }
} }
#region 券码 private RequestResourceResponse Response(string url, object requestHeaders = null, object requestBody = null, object responseHeaders = null, object responseBody = null, string responseError = "")
{
return new RequestResourceResponse
{
Url = url,
RequestHeaders = requestHeaders,
RequestBody = requestBody,
ResponseHeaders = responseHeaders,
ResponseBody = responseBody,
ResponseError = responseError
};
}
#region 券码
/// <summary>
/// 获取券码核销渠道
/// 0(Unknown), 1(POS), 2(Online), 3(Pickup), 4(Delivery), 5(McCofe), 6(Kiosk)
/// </summary>
/// <param name="channel"></param>
/// <returns></returns>
private string GetFreemudCouponChannel(string channel) private string GetFreemudCouponChannel(string channel)
{ {
switch (channel) switch (channel)
{ {
case ToolboxConstants.CHANNEL_DELIVERY: case ToolboxConstants.CHANNEL_DELIVERY:
return "2"; return "4";
case ToolboxConstants.CHANNEL_MCOFFEE: case ToolboxConstants.CHANNEL_MCOFFEE:
return "5"; return "5";
case ToolboxConstants.CHANNEL_KIOSK: case ToolboxConstants.CHANNEL_KIOSK:
return "2"; return "6";
default: default:
return ""; return "0";
} }
} }
public async Task<RequestResourceResponse> GetCouponProduct(GetCouponProductRequest request) public async Task<RequestResourceResponse> GetCouponInfo(GetCouponInfoRequest request)
{ {
var url = GetUrl(request.Env, "FreemudCoupon", "coupon_product"); var url = GetUrl(request.Env, "FreemudCoupon", "coupon_product");
var headers = new Dictionary<string, object> { var headers = new Dictionary<string, object> {
{ "pi", GetChannelPartnerId(request.Channel) } { "pi", GetChannelPartnerId(request.Channel) }
}; };
var data = new var body = new
{ {
couponlist = new List<dynamic> reqtype = 0, // 操作类型; 0(卡券查询), 2(卡券交易查询), 3(卡券冲正), 71(卡券核销)
{ station_id = "999", // POS机编号
new { coupon = request.CouponCode } operator_id = "999", // 营业员编号
}, store_id = request.StoreId, // 门店编号
store_id = request.StoreId, coupon = request.CouponCode, // 优惠券编号
channel = GetFreemudCouponChannel(request.Channel), channel = GetFreemudCouponChannel(request.Channel) // 核销渠道; 0(Unknown), 1(POS), 2(Online), 3(Pickup), 4(Delivery), 5(McCofe), 6(Kiosk)
reqtype = 88,
station_id = "999",
operator_id = "999"
}; };
var response = await HttpHeper.Post<object>(url, headers, jsonBody: data); var response = await HttpHeper.Post<dynamic>(url, headers, jsonBody: body);
return new RequestResourceResponse return Response(url, headers, body, response.Headers, response.Data, response.ErrorMessage);
{
Url = url,
RequestHeaders = headers,
RequestBody = data,
ResponseHeaders = response.Headers,
ResponseBody = response.Data,
ResponseError = response.ErrorMessage
};
} }
/// <summary>
/// 获取用户优惠券信息
/// </summary>
/// <returns></returns>
public async Task<RequestResourceResponse> GetUserCoupons()
{
throw new NotImplementedException();
}
#endregion #endregion
#region 订单 #region 订单
...@@ -146,11 +163,68 @@ namespace Freemud.BE.Toolbox.WebApi.Services ...@@ -146,11 +163,68 @@ namespace Freemud.BE.Toolbox.WebApi.Services
#endregion #endregion
#region 商品 #region 商品
public async Task<RequestResourceResponse> GetProductInfo(GetProductInfoRequest request)
{
var getProductBaseInfoResponse = await GetProductBaseInfo(request);
logger.LogInformation($"[GetProductInfo] getProductBaseInfoResponse: {JsonConvert.SerializeObject((object)getProductBaseInfoResponse)}");
var products = getProductBaseInfoResponse?.Data.data?.products as List<dynamic>;
if (products?.Any() ?? false)
return null;
foreach (var p in products)
{
p.extendProps = GetProductExtendProps(request.Env, p.pid);
}
//return Response(url, responseBody: products);
return null;
}
private async Task<dynamic> GetProductBaseInfo(GetProductInfoRequest request)
{
var url = GetUrl(request.Env, "FreemudProduct", "listBaseInfosByTimeV2");
url = string.Format(url, request.ProductId, $"{GetChannelUnifyId(request.Channel, request.Env)}_{request.StoreId}", request.Time.ToString("HH:mm:ss"), true);
var response = await HttpHeper.Get<dynamic>(url);
return response.Data;
}
private async Task<dynamic> GetProductExtendProps(string env, int productId)
{
var url = GetUrl(env, "FreemudProduct", "getProductExtensionInfo");
url = string.Format(url, productId);
var response = await HttpHeper.Get<dynamic>(url);
return response.Data;
}
#endregion #endregion
#region 门店 #region 门店
public async Task<RequestResourceResponse> GetStoreByPosition(GetStoreByPositionRequest request)
{
var candaoResponse = GetCanDaoStoreByPosition(request);
return null;
}
private async Task<dynamic> GetCanDaoStoreByPosition(GetStoreByPositionRequest request)
{
var url = GetUrl(request.Env, "CanDao", "getByPosition");
var body = new
{
request.longitude,
request.latitude
};
var response = await HttpHeper.Post<dynamic>(url, jsonBody: body);
return response.Data;
}
#endregion #endregion
} }
} }
...@@ -80,6 +80,24 @@ ...@@ -80,6 +80,24 @@
"Name": "listBaseInfosByTimeV2", "Name": "listBaseInfosByTimeV2",
"Path": "/V2/Query/Product/ListBaseInfosByTime?productId={0}&shopId={1}&time={2}&groupDetail={3}", "Path": "/V2/Query/Product/ListBaseInfosByTime?productId={0}&shopId={1}&time={2}&groupDetail={3}",
"Description": "根据指定时间批量查询商品基本信息需要传门店ID" "Description": "根据指定时间批量查询商品基本信息需要传门店ID"
},
{
"Name": "getProductExtensionInfo",
"Path": "/V2/prop/detailinfo/product?pid={0}",
"Description": "获取商品扩展信息"
}
]
},
{
"Name": "CanDao",
"DevBaseUrl": "https://qc.can-dao.com:3900",
"ProdBaseUrl": "https://mcdmap.can-dao.com",
"Description": "餐道服务",
"Resources": [
{
"Name": "getByPosition",
"Path": "/Action?serviceId=3&actionId=2",
"Description": "根据经纬度返回餐厅门店"
} }
] ]
} }
......
{
"version": 1,
"isRoot": true,
"tools": {
"dotnet-ef": {
"version": "3.1.3",
"commands": [
"dotnet-ef"
]
}
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Freemud.BE.Webportal.Models;
namespace Freemud.BE.Webportal.Controllers
{
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger)
{
_logger = logger;
}
public IActionResult Index()
{
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 });
}
}
}
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["Freemud.BE.Webportal/Freemud.BE.Webportal.csproj", "Freemud.BE.Webportal/"]
RUN dotnet restore "Freemud.BE.Webportal/Freemud.BE.Webportal.csproj"
COPY . .
WORKDIR "/src/Freemud.BE.Webportal"
RUN dotnet build "Freemud.BE.Webportal.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "Freemud.BE.Webportal.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Freemud.BE.Webportal.dll"]
\ No newline at end of file
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<UserSecretsId>0ff0930a-fcee-446e-9243-92e2bfab0a96</UserSecretsId>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.9.10" />
</ItemGroup>
</Project>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<NameOfLastUsedPublishProfile>FolderProfile</NameOfLastUsedPublishProfile>
<ActiveDebugProfile>Docker</ActiveDebugProfile>
</PropertyGroup>
</Project>
\ No newline at end of file
using System;
namespace Freemud.BE.Webportal.Models
{
public class ErrorViewModel
{
public string RequestId { get; set; }
public bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
namespace Freemud.BE.Webportal
{
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>();
});
}
}
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is used by the publish/package process of your Web project. You can customize the behavior of this process
by editing this MSBuild file. In order to learn more about this please visit https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebPublishMethod>FileSystem</WebPublishMethod>
<PublishProvider>FileSystem</PublishProvider>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish />
<LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
<ExcludeApp_Data>False</ExcludeApp_Data>
<TargetFramework>netcoreapp3.1</TargetFramework>
<ProjectGuid>babafce2-e149-4eec-911c-01fc9ccd5668</ProjectGuid>
<SelfContained>false</SelfContained>
<publishUrl>bin\Release\netcoreapp3.1\publish\</publishUrl>
<DeleteExistingFiles>True</DeleteExistingFiles>
<RuntimeIdentifier>linux-x64</RuntimeIdentifier>
</PropertyGroup>
</Project>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is used by the publish/package process of your Web project. You can customize the behavior of this process
by editing this MSBuild file. In order to learn more about this please visit https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<TimeStampOfAssociatedLegacyPublishXmlFile />
<_PublishTargetUrl>D:\WorkDocument\Freemud.BE\Freemud.BE.Webportal\bin\Release\netcoreapp3.1\publish\</_PublishTargetUrl>
</PropertyGroup>
</Project>
\ No newline at end of file
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:63486",
"sslPort": 44356
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"Freemud.BE.Webportal": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "https://localhost:5001;http://localhost:5000"
},
"Docker": {
"commandName": "Docker",
"launchBrowser": true,
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
"publishAllPorts": true,
"useSSL": true
}
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.HttpsPolicy;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace Freemud.BE.Webportal
{
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.AddControllersWithViews();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
//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"] - Freemud.BE.Webportal</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">Freemud.BE.Webportal</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 flex-sm-row-reverse">
<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; 2020 - Freemud.BE.Webportal - <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>
@RenderSection("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 Freemud.BE.Webportal
@using Freemud.BE.Webportal.Models
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
}
}
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*"
}
/* 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 */
}
// 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 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.
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.
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.
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.
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.
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 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.
...@@ -9,7 +9,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Freemud.BE.Toolbox.WebApi", ...@@ -9,7 +9,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Freemud.BE.Toolbox.WebApi",
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Freemud.BE.TopshelfSample", "Freemud.BE.TopshelfSample\Freemud.BE.TopshelfSample.csproj", "{C13EC0FF-609C-4196-8C16-83E87611EBFD}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Freemud.BE.TopshelfSample", "Freemud.BE.TopshelfSample\Freemud.BE.TopshelfSample.csproj", "{C13EC0FF-609C-4196-8C16-83E87611EBFD}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Freemud.BE.Toolbox.Testing", "Freemud.BE.Toolbox.Testing\Freemud.BE.Toolbox.Testing.csproj", "{5145C51B-7015-49DB-AB09-314A75A0BF44}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Freemud.BE.Toolbox.Testing", "Freemud.BE.Toolbox.Testing\Freemud.BE.Toolbox.Testing.csproj", "{5145C51B-7015-49DB-AB09-314A75A0BF44}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Freemud.BE.Webportal", "Freemud.BE.Webportal\Freemud.BE.Webportal.csproj", "{BABAFCE2-E149-4EEC-911C-01FC9CCD5668}"
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
...@@ -33,6 +35,10 @@ Global ...@@ -33,6 +35,10 @@ Global
{5145C51B-7015-49DB-AB09-314A75A0BF44}.Debug|Any CPU.Build.0 = Debug|Any CPU {5145C51B-7015-49DB-AB09-314A75A0BF44}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5145C51B-7015-49DB-AB09-314A75A0BF44}.Release|Any CPU.ActiveCfg = Release|Any CPU {5145C51B-7015-49DB-AB09-314A75A0BF44}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5145C51B-7015-49DB-AB09-314A75A0BF44}.Release|Any CPU.Build.0 = Release|Any CPU {5145C51B-7015-49DB-AB09-314A75A0BF44}.Release|Any CPU.Build.0 = Release|Any CPU
{BABAFCE2-E149-4EEC-911C-01FC9CCD5668}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BABAFCE2-E149-4EEC-911C-01FC9CCD5668}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BABAFCE2-E149-4EEC-911C-01FC9CCD5668}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BABAFCE2-E149-4EEC-911C-01FC9CCD5668}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
......
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