diff --git a/TravelCompany/TravelCompany.sln b/TravelCompany/TravelCompany.sln index 2f3c0af..0e9d002 100644 --- a/TravelCompany/TravelCompany.sln +++ b/TravelCompany/TravelCompany.sln @@ -19,7 +19,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TravelCompanyDataModels", " EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TravelCompanyDatabaseImplement", "TravelCompanyDatabaseImplement\TravelCompanyDatabaseImplement.csproj", "{7625604D-02E5-4833-86BC-5CC0731A7DFD}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TravelCompanyGuarantorApp", "TravelCompanyGuarantorApp\TravelCompanyGuarantorApp.csproj", "{2E404520-3DDA-479A-B832-8E6F00B54D19}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TravelCompanyWebApp", "TravelCompanyWebApp\TravelCompanyWebApp.csproj", "{1EBA3F5C-2FB8-4C6A-997B-E1D18793D86F}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -91,18 +91,18 @@ Global {7625604D-02E5-4833-86BC-5CC0731A7DFD}.Release|x64.Build.0 = Release|Any CPU {7625604D-02E5-4833-86BC-5CC0731A7DFD}.Release|x86.ActiveCfg = Release|Any CPU {7625604D-02E5-4833-86BC-5CC0731A7DFD}.Release|x86.Build.0 = Release|Any CPU - {2E404520-3DDA-479A-B832-8E6F00B54D19}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2E404520-3DDA-479A-B832-8E6F00B54D19}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2E404520-3DDA-479A-B832-8E6F00B54D19}.Debug|x64.ActiveCfg = Debug|Any CPU - {2E404520-3DDA-479A-B832-8E6F00B54D19}.Debug|x64.Build.0 = Debug|Any CPU - {2E404520-3DDA-479A-B832-8E6F00B54D19}.Debug|x86.ActiveCfg = Debug|Any CPU - {2E404520-3DDA-479A-B832-8E6F00B54D19}.Debug|x86.Build.0 = Debug|Any CPU - {2E404520-3DDA-479A-B832-8E6F00B54D19}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2E404520-3DDA-479A-B832-8E6F00B54D19}.Release|Any CPU.Build.0 = Release|Any CPU - {2E404520-3DDA-479A-B832-8E6F00B54D19}.Release|x64.ActiveCfg = Release|Any CPU - {2E404520-3DDA-479A-B832-8E6F00B54D19}.Release|x64.Build.0 = Release|Any CPU - {2E404520-3DDA-479A-B832-8E6F00B54D19}.Release|x86.ActiveCfg = Release|Any CPU - {2E404520-3DDA-479A-B832-8E6F00B54D19}.Release|x86.Build.0 = Release|Any CPU + {1EBA3F5C-2FB8-4C6A-997B-E1D18793D86F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1EBA3F5C-2FB8-4C6A-997B-E1D18793D86F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1EBA3F5C-2FB8-4C6A-997B-E1D18793D86F}.Debug|x64.ActiveCfg = Debug|Any CPU + {1EBA3F5C-2FB8-4C6A-997B-E1D18793D86F}.Debug|x64.Build.0 = Debug|Any CPU + {1EBA3F5C-2FB8-4C6A-997B-E1D18793D86F}.Debug|x86.ActiveCfg = Debug|Any CPU + {1EBA3F5C-2FB8-4C6A-997B-E1D18793D86F}.Debug|x86.Build.0 = Debug|Any CPU + {1EBA3F5C-2FB8-4C6A-997B-E1D18793D86F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1EBA3F5C-2FB8-4C6A-997B-E1D18793D86F}.Release|Any CPU.Build.0 = Release|Any CPU + {1EBA3F5C-2FB8-4C6A-997B-E1D18793D86F}.Release|x64.ActiveCfg = Release|Any CPU + {1EBA3F5C-2FB8-4C6A-997B-E1D18793D86F}.Release|x64.Build.0 = Release|Any CPU + {1EBA3F5C-2FB8-4C6A-997B-E1D18793D86F}.Release|x86.ActiveCfg = Release|Any CPU + {1EBA3F5C-2FB8-4C6A-997B-E1D18793D86F}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/TravelCompany/TravelCompanyContracts/ViewModels/ReportPlaceTourViewModel.cs b/TravelCompany/TravelCompanyContracts/ViewModels/ReportPlaceTourViewModel.cs new file mode 100644 index 0000000..d6a95e4 --- /dev/null +++ b/TravelCompany/TravelCompanyContracts/ViewModels/ReportPlaceTourViewModel.cs @@ -0,0 +1,8 @@ +namespace TravelAgencyContracts.ViewModels +{ + public class ReportPlaceTourViewModel + { + public string TourName { get; set; } = string.Empty; + public List Places { get; set; } = new(); + } +} diff --git a/TravelCompany/TravelCompanyContracts/ViewModels/ReportTourPeriodViewModel.cs b/TravelCompany/TravelCompanyContracts/ViewModels/ReportTourPeriodViewModel.cs new file mode 100644 index 0000000..6f1b085 --- /dev/null +++ b/TravelCompany/TravelCompanyContracts/ViewModels/ReportTourPeriodViewModel.cs @@ -0,0 +1,9 @@ +namespace TravelAgencyContracts.ViewModels +{ + public class ReportTourPeriodViewModel + { + public string TourName { get; set; } = string.Empty; + public List ExcursionGroups { get; set; } = new(); + public List Guides { get; set; } = new(); + } +} diff --git a/TravelCompany/TravelCompanyGuarantorApp/APIUser.cs b/TravelCompany/TravelCompanyGuarantorApp/APIUser.cs deleted file mode 100644 index 6125299..0000000 --- a/TravelCompany/TravelCompanyGuarantorApp/APIUser.cs +++ /dev/null @@ -1,49 +0,0 @@ -using Newtonsoft.Json; -using System.Net.Http.Headers; -using System.Text; -using TravelCompanyContracts.ViewModels.Guarantor.ViewModels; - -namespace TravelCompanGuarantorApp.Controllers -{ - public class APIUser - { - private static readonly HttpClient _user = new(); - - public static GuarantorViewModel? User { get; set; } = null; - - public static void Connect(IConfiguration configuration) - { - _user.BaseAddress = new Uri(configuration["IPAddress"]); - _user.DefaultRequestHeaders.Accept.Clear(); - _user.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); - } - - public static T? GetRequest(string requestUrl) - { - var response = _user.GetAsync(requestUrl); - var result = response.Result.Content.ReadAsStringAsync().Result; - if (response.Result.IsSuccessStatusCode) - { - return JsonConvert.DeserializeObject(result); - } - else - { - throw new Exception(result); - } - } - - public static void PostRequest(string requestUrl, T model) - { - var json = JsonConvert.SerializeObject(model); - var data = new StringContent(json, Encoding.UTF8, "application/json"); - - var response = _user.PostAsync(requestUrl, data); - - var result = response.Result.Content.ReadAsStringAsync().Result; - if (!response.Result.IsSuccessStatusCode) - { - throw new Exception(result); - } - } - } -} diff --git a/TravelCompany/TravelCompanyGuarantorApp/Controllers/HomeController.cs b/TravelCompany/TravelCompanyGuarantorApp/Controllers/HomeController.cs deleted file mode 100644 index fb7af83..0000000 --- a/TravelCompany/TravelCompanyGuarantorApp/Controllers/HomeController.cs +++ /dev/null @@ -1,112 +0,0 @@ -using TravelCompanGuarantorApp.Models; -using TravelCompanyContracts.BindingModels; -using TravelCompanyContracts.ViewModels; -using TravelCompanGuarantorApp; -using Microsoft.AspNetCore.Mvc; -using System.Diagnostics; -using TravelCompanyContracts.BindingModels.Guarantor; -using TravelCompanyContracts.ViewModels.Guarantor.ViewModels; - -namespace TravelCompanGuarantorApp.Controllers -{ - public class HomeController : Controller - { - private readonly ILogger _logger; - - public HomeController(ILogger logger) - { - _logger = logger; - } - - public IActionResult Index() - { - if (APIUser.User == null) - { - return Redirect("~/Home/Enter"); - } - return View(/*APIUser.GetRequest>($"api/main/getorders?userId={APIUser.User.Id}")*/); - } - - [HttpGet] - public IActionResult Privacy() - { - if (APIUser.User == null) - { - return Redirect("~/Home/Enter"); - } - return View(APIUser.User); - } - - [HttpPost] - public void Privacy(string login, string password, string email) - { - if (APIUser.User == null) - { - throw new Exception("Вход только авторизованным"); - } - if (string.IsNullOrEmpty(login) || string.IsNullOrEmpty(password) || string.IsNullOrEmpty(email)) - { - throw new Exception("Введите почту и пароль"); - } - APIUser.PostRequest("api/user/updatedata", new GuarantorBindingModel - { - Id = APIUser.User.Id, - Password = password, - Email = email - }); - - APIUser.User.Password = password; - APIUser.User.Email = email; - Response.Redirect("Index"); - } - - [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] - public IActionResult Error() - { - return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier }); - } - - [HttpGet] - public IActionResult Enter() - { - return View(); - } - - [HttpPost] - public void Enter(string login, string password) - { - if (string.IsNullOrEmpty(login) || string.IsNullOrEmpty(password)) - { - throw new Exception("Введите логин и пароль"); - } - APIUser.User = APIUser.GetRequest($"api/user/loginimplementer?login={login}&password={password}"); - if (APIUser.User == null) - { - throw new Exception("Неверный логин/пароль"); - } - Response.Redirect("Index"); - } - - [HttpGet] - public IActionResult Register() - { - return View(); - } - - [HttpPost] - public void Register(string login, string password, string email) - { - if (string.IsNullOrEmpty(login) || string.IsNullOrEmpty(password) || string.IsNullOrEmpty(email)) - { - throw new Exception("Введите почту и пароль"); - } - APIUser.PostRequest("api/user/registerimplementer", new GuarantorBindingModel - { - Password = password, - Email = email - }); - Response.Redirect("Enter"); - return; - } - } -} \ No newline at end of file diff --git a/TravelCompany/TravelCompanyGuarantorApp/Models/ErrorViewModel.cs b/TravelCompany/TravelCompanyGuarantorApp/Models/ErrorViewModel.cs deleted file mode 100644 index 90416df..0000000 --- a/TravelCompany/TravelCompanyGuarantorApp/Models/ErrorViewModel.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace TravelCompanGuarantorApp.Models -{ - public class ErrorViewModel - { - public string? RequestId { get; set; } - - public bool ShowRequestId => !string.IsNullOrEmpty(RequestId); - } -} \ No newline at end of file diff --git a/TravelCompany/TravelCompanyGuarantorApp/Views/Home/Index.cshtml b/TravelCompany/TravelCompanyGuarantorApp/Views/Home/Index.cshtml deleted file mode 100644 index d2d19bd..0000000 --- a/TravelCompany/TravelCompanyGuarantorApp/Views/Home/Index.cshtml +++ /dev/null @@ -1,8 +0,0 @@ -@{ - ViewData["Title"] = "Home Page"; -} - -
-

Welcome

-

Learn about building Web apps with ASP.NET Core.

-
diff --git a/TravelCompany/TravelCompanyGuarantorApp/Views/Shared/_Layout.cshtml b/TravelCompany/TravelCompanyGuarantorApp/Views/Shared/_Layout.cshtml deleted file mode 100644 index a461b84..0000000 --- a/TravelCompany/TravelCompanyGuarantorApp/Views/Shared/_Layout.cshtml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - @ViewData["Title"] - GarmentFactoryClientApp - - - - - - -
- -
-
-
- @RenderBody() -
-
-
-
- © 2024 - Сайт турфирмы "Иван Сусанин" для поручителя - Личные данные -
-
- - @RenderSection("Scripts", required: false) - - - diff --git a/TravelCompany/TravelCompanyGuarantorApp/Views/_ViewImports.cshtml b/TravelCompany/TravelCompanyGuarantorApp/Views/_ViewImports.cshtml deleted file mode 100644 index 09cb111..0000000 --- a/TravelCompany/TravelCompanyGuarantorApp/Views/_ViewImports.cshtml +++ /dev/null @@ -1,3 +0,0 @@ -@using TravelCompanyGuarantorApp -@using TravelCompanyGuarantorApp.Models -@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/jquery-validation/dist/additional-methods.min.js b/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/jquery-validation/dist/additional-methods.min.js deleted file mode 100644 index 6767f24..0000000 --- a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/jquery-validation/dist/additional-methods.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery Validation Plugin - v1.17.0 - 7/29/2017 - * https://jqueryvalidation.org/ - * Copyright (c) 2017 Jörn Zaefferer; Licensed MIT */ -!function(a){"function"==typeof define&&define.amd?define(["jquery","./jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return function(){function b(a){return a.replace(/<.[^<>]*?>/g," ").replace(/ | /gi," ").replace(/[.(),;:!?%#$'\"_+=\/\-“”’]*/g,"")}a.validator.addMethod("maxWords",function(a,c,d){return this.optional(c)||b(a).match(/\b\w+\b/g).length<=d},a.validator.format("Please enter {0} words or less.")),a.validator.addMethod("minWords",function(a,c,d){return this.optional(c)||b(a).match(/\b\w+\b/g).length>=d},a.validator.format("Please enter at least {0} words.")),a.validator.addMethod("rangeWords",function(a,c,d){var e=b(a),f=/\b\w+\b/g;return this.optional(c)||e.match(f).length>=d[0]&&e.match(f).length<=d[1]},a.validator.format("Please enter between {0} and {1} words."))}(),a.validator.addMethod("accept",function(b,c,d){var e,f,g,h="string"==typeof d?d.replace(/\s/g,""):"image/*",i=this.optional(c);if(i)return i;if("file"===a(c).attr("type")&&(h=h.replace(/[\-\[\]\/\{\}\(\)\+\?\.\\\^\$\|]/g,"\\$&").replace(/,/g,"|").replace(/\/\*/g,"/.*"),c.files&&c.files.length))for(g=new RegExp(".?("+h+")$","i"),e=0;e9?"0":f,g="JABCDEFGHI".substr(f,1).toString(),i.match(/[ABEH]/)?k===f:i.match(/[KPQS]/)?k===g:k===f||k===g},"Please specify a valid CIF number."),a.validator.addMethod("cpfBR",function(a){if(a=a.replace(/([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g,""),11!==a.length)return!1;var b,c,d,e,f=0;if(b=parseInt(a.substring(9,10),10),c=parseInt(a.substring(10,11),10),d=function(a,b){var c=10*a%11;return 10!==c&&11!==c||(c=0),c===b},""===a||"00000000000"===a||"11111111111"===a||"22222222222"===a||"33333333333"===a||"44444444444"===a||"55555555555"===a||"66666666666"===a||"77777777777"===a||"88888888888"===a||"99999999999"===a)return!1;for(e=1;e<=9;e++)f+=parseInt(a.substring(e-1,e),10)*(11-e);if(d(f,b)){for(f=0,e=1;e<=10;e++)f+=parseInt(a.substring(e-1,e),10)*(12-e);return d(f,c)}return!1},"Please specify a valid CPF number"),a.validator.addMethod("creditcard",function(a,b){if(this.optional(b))return"dependency-mismatch";if(/[^0-9 \-]+/.test(a))return!1;var c,d,e=0,f=0,g=!1;if(a=a.replace(/\D/g,""),a.length<13||a.length>19)return!1;for(c=a.length-1;c>=0;c--)d=a.charAt(c),f=parseInt(d,10),g&&(f*=2)>9&&(f-=9),e+=f,g=!g;return e%10===0},"Please enter a valid credit card number."),a.validator.addMethod("creditcardtypes",function(a,b,c){if(/[^0-9\-]+/.test(a))return!1;a=a.replace(/\D/g,"");var d=0;return c.mastercard&&(d|=1),c.visa&&(d|=2),c.amex&&(d|=4),c.dinersclub&&(d|=8),c.enroute&&(d|=16),c.discover&&(d|=32),c.jcb&&(d|=64),c.unknown&&(d|=128),c.all&&(d=255),1&d&&/^(5[12345])/.test(a)?16===a.length:2&d&&/^(4)/.test(a)?16===a.length:4&d&&/^(3[47])/.test(a)?15===a.length:8&d&&/^(3(0[012345]|[68]))/.test(a)?14===a.length:16&d&&/^(2(014|149))/.test(a)?15===a.length:32&d&&/^(6011)/.test(a)?16===a.length:64&d&&/^(3)/.test(a)?16===a.length:64&d&&/^(2131|1800)/.test(a)?15===a.length:!!(128&d)},"Please enter a valid credit card number."),a.validator.addMethod("currency",function(a,b,c){var d,e="string"==typeof c,f=e?c:c[0],g=!!e||c[1];return f=f.replace(/,/g,""),f=g?f+"]":f+"]?",d="^["+f+"([1-9]{1}[0-9]{0,2}(\\,[0-9]{3})*(\\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,}(\\.[0-9]{0,2})?|0(\\.[0-9]{0,2})?|(\\.[0-9]{1,2})?)$",d=new RegExp(d),this.optional(b)||d.test(a)},"Please specify a valid currency"),a.validator.addMethod("dateFA",function(a,b){return this.optional(b)||/^[1-4]\d{3}\/((0?[1-6]\/((3[0-1])|([1-2][0-9])|(0?[1-9])))|((1[0-2]|(0?[7-9]))\/(30|([1-2][0-9])|(0?[1-9]))))$/.test(a)},a.validator.messages.date),a.validator.addMethod("dateITA",function(a,b){var c,d,e,f,g,h=!1,i=/^\d{1,2}\/\d{1,2}\/\d{4}$/;return i.test(a)?(c=a.split("/"),d=parseInt(c[0],10),e=parseInt(c[1],10),f=parseInt(c[2],10),g=new Date(Date.UTC(f,e-1,d,12,0,0,0)),h=g.getUTCFullYear()===f&&g.getUTCMonth()===e-1&&g.getUTCDate()===d):h=!1,this.optional(b)||h},a.validator.messages.date),a.validator.addMethod("dateNL",function(a,b){return this.optional(b)||/^(0?[1-9]|[12]\d|3[01])[\.\/\-](0?[1-9]|1[012])[\.\/\-]([12]\d)?(\d\d)$/.test(a)},a.validator.messages.date),a.validator.addMethod("extension",function(a,b,c){return c="string"==typeof c?c.replace(/,/g,"|"):"png|jpe?g|gif",this.optional(b)||a.match(new RegExp("\\.("+c+")$","i"))},a.validator.format("Please enter a value with a valid extension.")),a.validator.addMethod("giroaccountNL",function(a,b){return this.optional(b)||/^[0-9]{1,7}$/.test(a)},"Please specify a valid giro account number"),a.validator.addMethod("iban",function(a,b){if(this.optional(b))return!0;var c,d,e,f,g,h,i,j,k,l=a.replace(/ /g,"").toUpperCase(),m="",n=!0,o="",p="",q=5;if(l.length9&&a.match(/^(?:(?:(?:00\s?|\+)44\s?|0)7(?:[1345789]\d{2}|624)\s?\d{3}\s?\d{3})$/)},"Please specify a valid mobile number"),a.validator.addMethod("netmask",function(a,b){return this.optional(b)||/^(254|252|248|240|224|192|128)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(254|252|248|240|224|192|128|0)/i.test(a)},"Please enter a valid netmask."),a.validator.addMethod("nieES",function(a,b){"use strict";if(this.optional(b))return!0;var c,d=new RegExp(/^[MXYZ]{1}[0-9]{7,8}[TRWAGMYFPDXBNJZSQVHLCKET]{1}$/gi),e="TRWAGMYFPDXBNJZSQVHLCKET",f=a.substr(a.length-1).toUpperCase();return a=a.toString().toUpperCase(),!(a.length>10||a.length<9||!d.test(a))&&(a=a.replace(/^[X]/,"0").replace(/^[Y]/,"1").replace(/^[Z]/,"2"),c=9===a.length?a.substr(0,8):a.substr(0,9),e.charAt(parseInt(c,10)%23)===f)},"Please specify a valid NIE number."),a.validator.addMethod("nifES",function(a,b){"use strict";return!!this.optional(b)||(a=a.toUpperCase(),!!a.match("((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)")&&(/^[0-9]{8}[A-Z]{1}$/.test(a)?"TRWAGMYFPDXBNJZSQVHLCKE".charAt(a.substring(8,0)%23)===a.charAt(8):!!/^[KLM]{1}/.test(a)&&a[8]==="TRWAGMYFPDXBNJZSQVHLCKE".charAt(a.substring(8,1)%23)))},"Please specify a valid NIF number."),a.validator.addMethod("nipPL",function(a){"use strict";if(a=a.replace(/[^0-9]/g,""),10!==a.length)return!1;for(var b=[6,5,7,2,3,4,5,6,7],c=0,d=0;d<9;d++)c+=b[d]*a[d];var e=c%11,f=10===e?0:e;return f===parseInt(a[9],10)},"Please specify a valid NIP number."),a.validator.addMethod("notEqualTo",function(b,c,d){return this.optional(c)||!a.validator.methods.equalTo.call(this,b,c,d)},"Please enter a different value, values must not be the same."),a.validator.addMethod("nowhitespace",function(a,b){return this.optional(b)||/^\S+$/i.test(a)},"No white space please"),a.validator.addMethod("pattern",function(a,b,c){return!!this.optional(b)||("string"==typeof c&&(c=new RegExp("^(?:"+c+")$")),c.test(a))},"Invalid format."),a.validator.addMethod("phoneNL",function(a,b){return this.optional(b)||/^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)[1-9]((\s|\s?\-\s?)?[0-9]){8}$/.test(a)},"Please specify a valid phone number."),a.validator.addMethod("phonesUK",function(a,b){return a=a.replace(/\(|\)|\s+|-/g,""),this.optional(b)||a.length>9&&a.match(/^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[1345789]\d{8}|624\d{6})))$/)},"Please specify a valid uk phone number"),a.validator.addMethod("phoneUK",function(a,b){return a=a.replace(/\(|\)|\s+|-/g,""),this.optional(b)||a.length>9&&a.match(/^(?:(?:(?:00\s?|\+)44\s?)|(?:\(?0))(?:\d{2}\)?\s?\d{4}\s?\d{4}|\d{3}\)?\s?\d{3}\s?\d{3,4}|\d{4}\)?\s?(?:\d{5}|\d{3}\s?\d{3})|\d{5}\)?\s?\d{4,5})$/)},"Please specify a valid phone number"),a.validator.addMethod("phoneUS",function(a,b){return a=a.replace(/\s+/g,""),this.optional(b)||a.length>9&&a.match(/^(\+?1-?)?(\([2-9]([02-9]\d|1[02-9])\)|[2-9]([02-9]\d|1[02-9]))-?[2-9]([02-9]\d|1[02-9])-?\d{4}$/)},"Please specify a valid phone number"),a.validator.addMethod("postalcodeBR",function(a,b){return this.optional(b)||/^\d{2}.\d{3}-\d{3}?$|^\d{5}-?\d{3}?$/.test(a)},"Informe um CEP válido."),a.validator.addMethod("postalCodeCA",function(a,b){return this.optional(b)||/^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ] *\d[ABCEGHJKLMNPRSTVWXYZ]\d$/i.test(a)},"Please specify a valid postal code"),a.validator.addMethod("postalcodeIT",function(a,b){return this.optional(b)||/^\d{5}$/.test(a)},"Please specify a valid postal code"),a.validator.addMethod("postalcodeNL",function(a,b){return this.optional(b)||/^[1-9][0-9]{3}\s?[a-zA-Z]{2}$/.test(a)},"Please specify a valid postal code"),a.validator.addMethod("postcodeUK",function(a,b){return this.optional(b)||/^((([A-PR-UWYZ][0-9])|([A-PR-UWYZ][0-9][0-9])|([A-PR-UWYZ][A-HK-Y][0-9])|([A-PR-UWYZ][A-HK-Y][0-9][0-9])|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))\s?([0-9][ABD-HJLNP-UW-Z]{2})|(GIR)\s?(0AA))$/i.test(a)},"Please specify a valid UK postcode"),a.validator.addMethod("require_from_group",function(b,c,d){var e=a(d[1],c.form),f=e.eq(0),g=f.data("valid_req_grp")?f.data("valid_req_grp"):a.extend({},this),h=e.filter(function(){return g.elementValue(this)}).length>=d[0];return f.data("valid_req_grp",g),a(c).data("being_validated")||(e.data("being_validated",!0),e.each(function(){g.element(this)}),e.data("being_validated",!1)),h},a.validator.format("Please fill at least {0} of these fields.")),a.validator.addMethod("skip_or_fill_minimum",function(b,c,d){var e=a(d[1],c.form),f=e.eq(0),g=f.data("valid_skip")?f.data("valid_skip"):a.extend({},this),h=e.filter(function(){return g.elementValue(this)}).length,i=0===h||h>=d[0];return f.data("valid_skip",g),a(c).data("being_validated")||(e.data("being_validated",!0),e.each(function(){g.element(this)}),e.data("being_validated",!1)),i},a.validator.format("Please either skip these fields or fill at least {0} of them.")),a.validator.addMethod("stateUS",function(a,b,c){var d,e="undefined"==typeof c,f=!e&&"undefined"!=typeof c.caseSensitive&&c.caseSensitive,g=!e&&"undefined"!=typeof c.includeTerritories&&c.includeTerritories,h=!e&&"undefined"!=typeof c.includeMilitary&&c.includeMilitary;return d=g||h?g&&h?"^(A[AEKLPRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$":g?"^(A[KLRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$":"^(A[AEKLPRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$":"^(A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$",d=f?new RegExp(d):new RegExp(d,"i"),this.optional(b)||d.test(a)},"Please specify a valid state"),a.validator.addMethod("strippedminlength",function(b,c,d){return a(b).text().length>=d},a.validator.format("Please enter at least {0} characters")),a.validator.addMethod("time",function(a,b){return this.optional(b)||/^([01]\d|2[0-3]|[0-9])(:[0-5]\d){1,2}$/.test(a)},"Please enter a valid time, between 00:00 and 23:59"),a.validator.addMethod("time12h",function(a,b){return this.optional(b)||/^((0?[1-9]|1[012])(:[0-5]\d){1,2}(\ ?[AP]M))$/i.test(a)},"Please enter a valid time in 12-hour am/pm format"),a.validator.addMethod("url2",function(a,b){return this.optional(b)||/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(a)},a.validator.messages.url),a.validator.addMethod("vinUS",function(a){if(17!==a.length)return!1;var b,c,d,e,f,g,h=["A","B","C","D","E","F","G","H","J","K","L","M","N","P","R","S","T","U","V","W","X","Y","Z"],i=[1,2,3,4,5,6,7,8,1,2,3,4,5,7,9,2,3,4,5,6,7,8,9],j=[8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2],k=0;for(b=0;b<17;b++){if(e=j[b],d=a.slice(b,b+1),8===b&&(g=d),isNaN(d)){for(c=0;c").attr("name",c.submitButton.name).val(a(c.submitButton).val()).appendTo(c.currentForm)),!c.settings.submitHandler||(e=c.settings.submitHandler.call(c,c.currentForm,b),d&&d.remove(),void 0!==e&&e)}return c.settings.debug&&b.preventDefault(),c.cancelSubmit?(c.cancelSubmit=!1,d()):c.form()?c.pendingRequest?(c.formSubmitted=!0,!1):d():(c.focusInvalid(),!1)})),c)},valid:function(){var b,c,d;return a(this[0]).is("form")?b=this.validate().form():(d=[],b=!0,c=a(this[0].form).validate(),this.each(function(){b=c.element(this)&&b,b||(d=d.concat(c.errorList))}),c.errorList=d),b},rules:function(b,c){var d,e,f,g,h,i,j=this[0];if(null!=j&&(!j.form&&j.hasAttribute("contenteditable")&&(j.form=this.closest("form")[0],j.name=this.attr("name")),null!=j.form)){if(b)switch(d=a.data(j.form,"validator").settings,e=d.rules,f=a.validator.staticRules(j),b){case"add":a.extend(f,a.validator.normalizeRule(c)),delete f.messages,e[j.name]=f,c.messages&&(d.messages[j.name]=a.extend(d.messages[j.name],c.messages));break;case"remove":return c?(i={},a.each(c.split(/\s/),function(a,b){i[b]=f[b],delete f[b]}),i):(delete e[j.name],f)}return g=a.validator.normalizeRules(a.extend({},a.validator.classRules(j),a.validator.attributeRules(j),a.validator.dataRules(j),a.validator.staticRules(j)),j),g.required&&(h=g.required,delete g.required,g=a.extend({required:h},g)),g.remote&&(h=g.remote,delete g.remote,g=a.extend(g,{remote:h})),g}}}),a.extend(a.expr.pseudos||a.expr[":"],{blank:function(b){return!a.trim(""+a(b).val())},filled:function(b){var c=a(b).val();return null!==c&&!!a.trim(""+c)},unchecked:function(b){return!a(b).prop("checked")}}),a.validator=function(b,c){this.settings=a.extend(!0,{},a.validator.defaults,b),this.currentForm=c,this.init()},a.validator.format=function(b,c){return 1===arguments.length?function(){var c=a.makeArray(arguments);return c.unshift(b),a.validator.format.apply(this,c)}:void 0===c?b:(arguments.length>2&&c.constructor!==Array&&(c=a.makeArray(arguments).slice(1)),c.constructor!==Array&&(c=[c]),a.each(c,function(a,c){b=b.replace(new RegExp("\\{"+a+"\\}","g"),function(){return c})}),b)},a.extend(a.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",pendingClass:"pending",validClass:"valid",errorElement:"label",focusCleanup:!1,focusInvalid:!0,errorContainer:a([]),errorLabelContainer:a([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,onfocusin:function(a){this.lastActive=a,this.settings.focusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,a,this.settings.errorClass,this.settings.validClass),this.hideThese(this.errorsFor(a)))},onfocusout:function(a){this.checkable(a)||!(a.name in this.submitted)&&this.optional(a)||this.element(a)},onkeyup:function(b,c){var d=[16,17,18,20,35,36,37,38,39,40,45,144,225];9===c.which&&""===this.elementValue(b)||a.inArray(c.keyCode,d)!==-1||(b.name in this.submitted||b.name in this.invalid)&&this.element(b)},onclick:function(a){a.name in this.submitted?this.element(a):a.parentNode.name in this.submitted&&this.element(a.parentNode)},highlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).addClass(c).removeClass(d):a(b).addClass(c).removeClass(d)},unhighlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).removeClass(c).addClass(d):a(b).removeClass(c).addClass(d)}},setDefaults:function(b){a.extend(a.validator.defaults,b)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",equalTo:"Please enter the same value again.",maxlength:a.validator.format("Please enter no more than {0} characters."),minlength:a.validator.format("Please enter at least {0} characters."),rangelength:a.validator.format("Please enter a value between {0} and {1} characters long."),range:a.validator.format("Please enter a value between {0} and {1}."),max:a.validator.format("Please enter a value less than or equal to {0}."),min:a.validator.format("Please enter a value greater than or equal to {0}."),step:a.validator.format("Please enter a multiple of {0}.")},autoCreateRanges:!1,prototype:{init:function(){function b(b){!this.form&&this.hasAttribute("contenteditable")&&(this.form=a(this).closest("form")[0],this.name=a(this).attr("name"));var c=a.data(this.form,"validator"),d="on"+b.type.replace(/^validate/,""),e=c.settings;e[d]&&!a(this).is(e.ignore)&&e[d].call(c,this,b)}this.labelContainer=a(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||a(this.currentForm),this.containers=a(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var c,d=this.groups={};a.each(this.settings.groups,function(b,c){"string"==typeof c&&(c=c.split(/\s/)),a.each(c,function(a,c){d[c]=b})}),c=this.settings.rules,a.each(c,function(b,d){c[b]=a.validator.normalizeRule(d)}),a(this.currentForm).on("focusin.validate focusout.validate keyup.validate",":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], [type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], [type='radio'], [type='checkbox'], [contenteditable], [type='button']",b).on("click.validate","select, option, [type='radio'], [type='checkbox']",b),this.settings.invalidHandler&&a(this.currentForm).on("invalid-form.validate",this.settings.invalidHandler)},form:function(){return this.checkForm(),a.extend(this.submitted,this.errorMap),this.invalid=a.extend({},this.errorMap),this.valid()||a(this.currentForm).triggerHandler("invalid-form",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var a=0,b=this.currentElements=this.elements();b[a];a++)this.check(b[a]);return this.valid()},element:function(b){var c,d,e=this.clean(b),f=this.validationTargetFor(e),g=this,h=!0;return void 0===f?delete this.invalid[e.name]:(this.prepareElement(f),this.currentElements=a(f),d=this.groups[f.name],d&&a.each(this.groups,function(a,b){b===d&&a!==f.name&&(e=g.validationTargetFor(g.clean(g.findByName(a))),e&&e.name in g.invalid&&(g.currentElements.push(e),h=g.check(e)&&h))}),c=this.check(f)!==!1,h=h&&c,c?this.invalid[f.name]=!1:this.invalid[f.name]=!0,this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),a(b).attr("aria-invalid",!c)),h},showErrors:function(b){if(b){var c=this;a.extend(this.errorMap,b),this.errorList=a.map(this.errorMap,function(a,b){return{message:a,element:c.findByName(b)[0]}}),this.successList=a.grep(this.successList,function(a){return!(a.name in b)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){a.fn.resetForm&&a(this.currentForm).resetForm(),this.invalid={},this.submitted={},this.prepareForm(),this.hideErrors();var b=this.elements().removeData("previousValue").removeAttr("aria-invalid");this.resetElements(b)},resetElements:function(a){var b;if(this.settings.unhighlight)for(b=0;a[b];b++)this.settings.unhighlight.call(this,a[b],this.settings.errorClass,""),this.findByName(a[b].name).removeClass(this.settings.validClass);else a.removeClass(this.settings.errorClass).removeClass(this.settings.validClass)},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(a){var b,c=0;for(b in a)void 0!==a[b]&&null!==a[b]&&a[b]!==!1&&c++;return c},hideErrors:function(){this.hideThese(this.toHide)},hideThese:function(a){a.not(this.containers).text(""),this.addWrapper(a).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{a(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin")}catch(b){}},findLastActive:function(){var b=this.lastActive;return b&&1===a.grep(this.errorList,function(a){return a.element.name===b.name}).length&&b},elements:function(){var b=this,c={};return a(this.currentForm).find("input, select, textarea, [contenteditable]").not(":submit, :reset, :image, :disabled").not(this.settings.ignore).filter(function(){var d=this.name||a(this).attr("name");return!d&&b.settings.debug&&window.console&&console.error("%o has no name assigned",this),this.hasAttribute("contenteditable")&&(this.form=a(this).closest("form")[0],this.name=d),!(d in c||!b.objectLength(a(this).rules()))&&(c[d]=!0,!0)})},clean:function(b){return a(b)[0]},errors:function(){var b=this.settings.errorClass.split(" ").join(".");return a(this.settings.errorElement+"."+b,this.errorContext)},resetInternals:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=a([]),this.toHide=a([])},reset:function(){this.resetInternals(),this.currentElements=a([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(a){this.reset(),this.toHide=this.errorsFor(a)},elementValue:function(b){var c,d,e=a(b),f=b.type;return"radio"===f||"checkbox"===f?this.findByName(b.name).filter(":checked").val():"number"===f&&"undefined"!=typeof b.validity?b.validity.badInput?"NaN":e.val():(c=b.hasAttribute("contenteditable")?e.text():e.val(),"file"===f?"C:\\fakepath\\"===c.substr(0,12)?c.substr(12):(d=c.lastIndexOf("/"),d>=0?c.substr(d+1):(d=c.lastIndexOf("\\"),d>=0?c.substr(d+1):c)):"string"==typeof c?c.replace(/\r/g,""):c)},check:function(b){b=this.validationTargetFor(this.clean(b));var c,d,e,f,g=a(b).rules(),h=a.map(g,function(a,b){return b}).length,i=!1,j=this.elementValue(b);if("function"==typeof g.normalizer?f=g.normalizer:"function"==typeof this.settings.normalizer&&(f=this.settings.normalizer),f){if(j=f.call(b,j),"string"!=typeof j)throw new TypeError("The normalizer should return a string value.");delete g.normalizer}for(d in g){e={method:d,parameters:g[d]};try{if(c=a.validator.methods[d].call(this,j,b,e.parameters),"dependency-mismatch"===c&&1===h){i=!0;continue}if(i=!1,"pending"===c)return void(this.toHide=this.toHide.not(this.errorsFor(b)));if(!c)return this.formatAndAdd(b,e),!1}catch(k){throw this.settings.debug&&window.console&&console.log("Exception occurred when checking element "+b.id+", check the '"+e.method+"' method.",k),k instanceof TypeError&&(k.message+=". Exception occurred when checking element "+b.id+", check the '"+e.method+"' method."),k}}if(!i)return this.objectLength(g)&&this.successList.push(b),!0},customDataMessage:function(b,c){return a(b).data("msg"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase())||a(b).data("msg")},customMessage:function(a,b){var c=this.settings.messages[a];return c&&(c.constructor===String?c:c[b])},findDefined:function(){for(var a=0;aWarning: No message defined for "+b.name+""),e=/\$?\{(\d+)\}/g;return"function"==typeof d?d=d.call(this,c.parameters,b):e.test(d)&&(d=a.validator.format(d.replace(e,"{$1}"),c.parameters)),d},formatAndAdd:function(a,b){var c=this.defaultMessage(a,b);this.errorList.push({message:c,element:a,method:b.method}),this.errorMap[a.name]=c,this.submitted[a.name]=c},addWrapper:function(a){return this.settings.wrapper&&(a=a.add(a.parent(this.settings.wrapper))),a},defaultShowErrors:function(){var a,b,c;for(a=0;this.errorList[a];a++)c=this.errorList[a],this.settings.highlight&&this.settings.highlight.call(this,c.element,this.settings.errorClass,this.settings.validClass),this.showLabel(c.element,c.message);if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]);if(this.settings.unhighlight)for(a=0,b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return a(this.errorList).map(function(){return this.element})},showLabel:function(b,c){var d,e,f,g,h=this.errorsFor(b),i=this.idOrName(b),j=a(b).attr("aria-describedby");h.length?(h.removeClass(this.settings.validClass).addClass(this.settings.errorClass),h.html(c)):(h=a("<"+this.settings.errorElement+">").attr("id",i+"-error").addClass(this.settings.errorClass).html(c||""),d=h,this.settings.wrapper&&(d=h.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.length?this.labelContainer.append(d):this.settings.errorPlacement?this.settings.errorPlacement.call(this,d,a(b)):d.insertAfter(b),h.is("label")?h.attr("for",i):0===h.parents("label[for='"+this.escapeCssMeta(i)+"']").length&&(f=h.attr("id"),j?j.match(new RegExp("\\b"+this.escapeCssMeta(f)+"\\b"))||(j+=" "+f):j=f,a(b).attr("aria-describedby",j),e=this.groups[b.name],e&&(g=this,a.each(g.groups,function(b,c){c===e&&a("[name='"+g.escapeCssMeta(b)+"']",g.currentForm).attr("aria-describedby",h.attr("id"))})))),!c&&this.settings.success&&(h.text(""),"string"==typeof this.settings.success?h.addClass(this.settings.success):this.settings.success(h,b)),this.toShow=this.toShow.add(h)},errorsFor:function(b){var c=this.escapeCssMeta(this.idOrName(b)),d=a(b).attr("aria-describedby"),e="label[for='"+c+"'], label[for='"+c+"'] *";return d&&(e=e+", #"+this.escapeCssMeta(d).replace(/\s+/g,", #")),this.errors().filter(e)},escapeCssMeta:function(a){return a.replace(/([\\!"#$%&'()*+,.\/:;<=>?@\[\]^`{|}~])/g,"\\$1")},idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},validationTargetFor:function(b){return this.checkable(b)&&(b=this.findByName(b.name)),a(b).not(this.settings.ignore)[0]},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(b){return a(this.currentForm).find("[name='"+this.escapeCssMeta(b)+"']")},getLength:function(b,c){switch(c.nodeName.toLowerCase()){case"select":return a("option:selected",c).length;case"input":if(this.checkable(c))return this.findByName(c.name).filter(":checked").length}return b.length},depend:function(a,b){return!this.dependTypes[typeof a]||this.dependTypes[typeof a](a,b)},dependTypes:{"boolean":function(a){return a},string:function(b,c){return!!a(b,c.form).length},"function":function(a,b){return a(b)}},optional:function(b){var c=this.elementValue(b);return!a.validator.methods.required.call(this,c,b)&&"dependency-mismatch"},startRequest:function(b){this.pending[b.name]||(this.pendingRequest++,a(b).addClass(this.settings.pendingClass),this.pending[b.name]=!0)},stopRequest:function(b,c){this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[b.name],a(b).removeClass(this.settings.pendingClass),c&&0===this.pendingRequest&&this.formSubmitted&&this.form()?(a(this.currentForm).submit(),this.submitButton&&a("input:hidden[name='"+this.submitButton.name+"']",this.currentForm).remove(),this.formSubmitted=!1):!c&&0===this.pendingRequest&&this.formSubmitted&&(a(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)},previousValue:function(b,c){return c="string"==typeof c&&c||"remote",a.data(b,"previousValue")||a.data(b,"previousValue",{old:null,valid:!0,message:this.defaultMessage(b,{method:c})})},destroy:function(){this.resetForm(),a(this.currentForm).off(".validate").removeData("validator").find(".validate-equalTo-blur").off(".validate-equalTo").removeClass("validate-equalTo-blur")}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(b,c){b.constructor===String?this.classRuleSettings[b]=c:a.extend(this.classRuleSettings,b)},classRules:function(b){var c={},d=a(b).attr("class");return d&&a.each(d.split(" "),function(){this in a.validator.classRuleSettings&&a.extend(c,a.validator.classRuleSettings[this])}),c},normalizeAttributeRule:function(a,b,c,d){/min|max|step/.test(c)&&(null===b||/number|range|text/.test(b))&&(d=Number(d),isNaN(d)&&(d=void 0)),d||0===d?a[c]=d:b===c&&"range"!==b&&(a[c]=!0)},attributeRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)"required"===c?(d=b.getAttribute(c),""===d&&(d=!0),d=!!d):d=f.attr(c),this.normalizeAttributeRule(e,g,c,d);return e.maxlength&&/-1|2147483647|524288/.test(e.maxlength)&&delete e.maxlength,e},dataRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)d=f.data("rule"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase()),this.normalizeAttributeRule(e,g,c,d);return e},staticRules:function(b){var c={},d=a.data(b.form,"validator");return d.settings.rules&&(c=a.validator.normalizeRule(d.settings.rules[b.name])||{}),c},normalizeRules:function(b,c){return a.each(b,function(d,e){if(e===!1)return void delete b[d];if(e.param||e.depends){var f=!0;switch(typeof e.depends){case"string":f=!!a(e.depends,c.form).length;break;case"function":f=e.depends.call(c,c)}f?b[d]=void 0===e.param||e.param:(a.data(c.form,"validator").resetElements(a(c)),delete b[d])}}),a.each(b,function(d,e){b[d]=a.isFunction(e)&&"normalizer"!==d?e(c):e}),a.each(["minlength","maxlength"],function(){b[this]&&(b[this]=Number(b[this]))}),a.each(["rangelength","range"],function(){var c;b[this]&&(a.isArray(b[this])?b[this]=[Number(b[this][0]),Number(b[this][1])]:"string"==typeof b[this]&&(c=b[this].replace(/[\[\]]/g,"").split(/[\s,]+/),b[this]=[Number(c[0]),Number(c[1])]))}),a.validator.autoCreateRanges&&(null!=b.min&&null!=b.max&&(b.range=[b.min,b.max],delete b.min,delete b.max),null!=b.minlength&&null!=b.maxlength&&(b.rangelength=[b.minlength,b.maxlength],delete b.minlength,delete b.maxlength)),b},normalizeRule:function(b){if("string"==typeof b){var c={};a.each(b.split(/\s/),function(){c[this]=!0}),b=c}return b},addMethod:function(b,c,d){a.validator.methods[b]=c,a.validator.messages[b]=void 0!==d?d:a.validator.messages[b],c.length<3&&a.validator.addClassRules(b,a.validator.normalizeRule(b))},methods:{required:function(b,c,d){if(!this.depend(d,c))return"dependency-mismatch";if("select"===c.nodeName.toLowerCase()){var e=a(c).val();return e&&e.length>0}return this.checkable(c)?this.getLength(b,c)>0:b.length>0},email:function(a,b){return this.optional(b)||/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(a)},url:function(a,b){return this.optional(b)||/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[\/?#]\S*)?$/i.test(a)},date:function(a,b){return this.optional(b)||!/Invalid|NaN/.test(new Date(a).toString())},dateISO:function(a,b){return this.optional(b)||/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(a)},number:function(a,b){return this.optional(b)||/^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\d+$/.test(a)},minlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e>=d},maxlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e<=d},rangelength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e>=d[0]&&e<=d[1]},min:function(a,b,c){return this.optional(b)||a>=c},max:function(a,b,c){return this.optional(b)||a<=c},range:function(a,b,c){return this.optional(b)||a>=c[0]&&a<=c[1]},step:function(b,c,d){var e,f=a(c).attr("type"),g="Step attribute on input type "+f+" is not supported.",h=["text","number","range"],i=new RegExp("\\b"+f+"\\b"),j=f&&!i.test(h.join()),k=function(a){var b=(""+a).match(/(?:\.(\d+))?$/);return b&&b[1]?b[1].length:0},l=function(a){return Math.round(a*Math.pow(10,e))},m=!0;if(j)throw new Error(g);return e=k(d),(k(b)>e||l(b)%l(d)!==0)&&(m=!1),this.optional(c)||m},equalTo:function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.not(".validate-equalTo-blur").length&&e.addClass("validate-equalTo-blur").on("blur.validate-equalTo",function(){a(c).valid()}),b===e.val()},remote:function(b,c,d,e){if(this.optional(c))return"dependency-mismatch";e="string"==typeof e&&e||"remote";var f,g,h,i=this.previousValue(c,e);return this.settings.messages[c.name]||(this.settings.messages[c.name]={}),i.originalMessage=i.originalMessage||this.settings.messages[c.name][e],this.settings.messages[c.name][e]=i.message,d="string"==typeof d&&{url:d}||d,h=a.param(a.extend({data:b},d.data)),i.old===h?i.valid:(i.old=h,f=this,this.startRequest(c),g={},g[c.name]=b,a.ajax(a.extend(!0,{mode:"abort",port:"validate"+c.name,dataType:"json",data:g,context:f.currentForm,success:function(a){var d,g,h,j=a===!0||"true"===a;f.settings.messages[c.name][e]=i.originalMessage,j?(h=f.formSubmitted,f.resetInternals(),f.toHide=f.errorsFor(c),f.formSubmitted=h,f.successList.push(c),f.invalid[c.name]=!1,f.showErrors()):(d={},g=a||f.defaultMessage(c,{method:e,parameters:b}),d[c.name]=i.message=g,f.invalid[c.name]=!0,f.showErrors(d)),i.valid=j,f.stopRequest(c,j)}},d)),"pending")}}});var b,c={};return a.ajaxPrefilter?a.ajaxPrefilter(function(a,b,d){var e=a.port;"abort"===a.mode&&(c[e]&&c[e].abort(),c[e]=d)}):(b=a.ajax,a.ajax=function(d){var e=("mode"in d?d:a.ajaxSettings).mode,f=("port"in d?d:a.ajaxSettings).port;return"abort"===e?(c[f]&&c[f].abort(),c[f]=b.apply(this,arguments),c[f]):b.apply(this,arguments)}),a}); \ No newline at end of file diff --git a/TravelCompany/TravelCompanyWebApp/Controllers/HomeController.cs b/TravelCompany/TravelCompanyWebApp/Controllers/HomeController.cs new file mode 100644 index 0000000..80dd94f --- /dev/null +++ b/TravelCompany/TravelCompanyWebApp/Controllers/HomeController.cs @@ -0,0 +1,114 @@ +using TravelCompanyContracts.BindingModels; +using TravelCompanyContracts.BindingModels.Guarantor; +using TravelCompanyContracts.BindingModels.Contractor; +using TravelCompanyContracts.ViewModels.Contractor; +using TravelCompanyContracts.ViewModels.Guarantor; +using TravelCompanyWebApp.Models; +using Microsoft.AspNetCore.Mvc; +using System.Diagnostics; +using TravelCompanyContracts.ViewModels.Contractor.ViewModels; +using TravelAgencyContracts.ViewModels; + +namespace TravelCompanyWebApp.Controllers +{ + public class HomeController : Controller + { + private readonly ILogger _logger; + + public HomeController(ILogger logger) + { + _logger = logger; + } + + public IActionResult Index() + { + return View(); + } + + [HttpGet] + 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 }); + } + + [HttpGet] + public IActionResult Enter() + { + return View(); + } + + [HttpGet] + public IActionResult Register() + { + return View(); + } + + [HttpGet] + public IActionResult Excursions() + { + return View(new List()); + } + [HttpGet] + public IActionResult ExcursionGroups() + { + return View(new List()); + } + [HttpGet] + public IActionResult Tours() + { + return View(new List()); + } + + [HttpGet] + public IActionResult CreateTour() + { + return View(); + } + [HttpGet] + public IActionResult CreateExcursion() + { + return View(new List()); + } + [HttpGet] + public IActionResult CreateExcursionGroup() + { + return View(new List()); + } + [HttpGet] + public IActionResult UpdateTour() + { + return View(); + } + [HttpGet] + public IActionResult UpdateExcursion() + { + return View(new List()); + } + [HttpGet] + public IActionResult UpdateExcursionGroup() + { + return View(new List()); + } + [HttpGet] + public IActionResult ReportMenu() + { + return View(); + } + [HttpGet] + public IActionResult ReportPlaceTour() + { + return View(new List()); + } + [HttpGet] + public IActionResult ReportTourPeriod() + { + return View(new List()); + } + } +} diff --git a/TravelCompany/TravelCompanyWebApp/Models/ErrorViewModel.cs b/TravelCompany/TravelCompanyWebApp/Models/ErrorViewModel.cs new file mode 100644 index 0000000..eb49c5c --- /dev/null +++ b/TravelCompany/TravelCompanyWebApp/Models/ErrorViewModel.cs @@ -0,0 +1,9 @@ +namespace TravelCompanyWebApp.Models +{ + public class ErrorViewModel + { + public string? RequestId { get; set; } + + public bool ShowRequestId => !string.IsNullOrEmpty(RequestId); + } +} diff --git a/TravelCompany/TravelCompanyGuarantorApp/Program.cs b/TravelCompany/TravelCompanyWebApp/Program.cs similarity index 75% rename from TravelCompany/TravelCompanyGuarantorApp/Program.cs rename to TravelCompany/TravelCompanyWebApp/Program.cs index 2410ac4..0f3ee13 100644 --- a/TravelCompany/TravelCompanyGuarantorApp/Program.cs +++ b/TravelCompany/TravelCompanyWebApp/Program.cs @@ -1,14 +1,7 @@ -using TravelCompanGuarantorApp.Controllers; - var builder = WebApplication.CreateBuilder(args); - // Add services to the container. builder.Services.AddControllersWithViews(); - var app = builder.Build(); - -APIUser.Connect(builder.Configuration); - // Configure the HTTP request pipeline. if (!app.Environment.IsDevelopment()) { @@ -16,17 +9,11 @@ if (!app.Environment.IsDevelopment()) // 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.MapControllerRoute( - name: "default", - pattern: "{controller=Home}/{action=Index}/{id?}"); - -app.Run(); - + name: "default", + pattern: "{controller=Home}/{action=Index}/{id?}"); +app.Run(); \ No newline at end of file diff --git a/TravelCompany/TravelCompanyGuarantorApp/Properties/launchSettings.json b/TravelCompany/TravelCompanyWebApp/Properties/launchSettings.json similarity index 74% rename from TravelCompany/TravelCompanyGuarantorApp/Properties/launchSettings.json rename to TravelCompany/TravelCompanyWebApp/Properties/launchSettings.json index 236c232..d40d04c 100644 --- a/TravelCompany/TravelCompanyGuarantorApp/Properties/launchSettings.json +++ b/TravelCompany/TravelCompanyWebApp/Properties/launchSettings.json @@ -3,16 +3,16 @@ "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { - "applicationUrl": "http://localhost:34894", - "sslPort": 44330 + "applicationUrl": "http://localhost:13126", + "sslPort": 44334 } }, "profiles": { - "ComputerShopImplementerApp": { + "TravelAgencyWebApp": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, - "applicationUrl": "https://localhost:7049;http://localhost:5024", + "applicationUrl": "https://localhost:7180;http://localhost:5032", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } diff --git a/TravelCompany/TravelCompanyGuarantorApp/TravelCompanyGuarantorApp.csproj b/TravelCompany/TravelCompanyWebApp/TravelCompanyWebApp.csproj similarity index 85% rename from TravelCompany/TravelCompanyGuarantorApp/TravelCompanyGuarantorApp.csproj rename to TravelCompany/TravelCompanyWebApp/TravelCompanyWebApp.csproj index 46cdf83..a3890cd 100644 --- a/TravelCompany/TravelCompanyGuarantorApp/TravelCompanyGuarantorApp.csproj +++ b/TravelCompany/TravelCompanyWebApp/TravelCompanyWebApp.csproj @@ -7,7 +7,7 @@ - + diff --git a/TravelCompany/TravelCompanyWebApp/Views/Home/CreateExcursion.cshtml b/TravelCompany/TravelCompanyWebApp/Views/Home/CreateExcursion.cshtml new file mode 100644 index 0000000..d4d3a48 --- /dev/null +++ b/TravelCompany/TravelCompanyWebApp/Views/Home/CreateExcursion.cshtml @@ -0,0 +1,47 @@ +@using TravelCompanyContracts.ViewModels.Contractor.ViewModels + +@model List +@{ + ViewData["Title"] = "Create excursion"; +} +
+

Создание экскурсии

+
+
+
+
Название:
+
+
+
+
Описание:
+
+
+
+
Туры
+
+ + + + + + + + + @foreach (var tour in Model) + { + + + + + } + +
НазваниеВыбор
@tour.TourName + +
+
+
+
+
+
+
+
diff --git a/TravelCompany/TravelCompanyWebApp/Views/Home/CreateExcursionGroup.cshtml b/TravelCompany/TravelCompanyWebApp/Views/Home/CreateExcursionGroup.cshtml new file mode 100644 index 0000000..f8048cf --- /dev/null +++ b/TravelCompany/TravelCompanyWebApp/Views/Home/CreateExcursionGroup.cshtml @@ -0,0 +1,53 @@ +@using TravelCompanyContracts.ViewModels.Contractor.ViewModels + +@model List +@{ + ViewData["Title"] = "Create excursion group"; +} +
+

Создание экскурсионной группы

+
+
+
+
Название:
+
+
+
+
Количество участников:
+
+
+
+
Гид:
+
+ +
+
+
+
Туры
+
+ + + + + + + + + @foreach (var tour in Model) + { + + + + + } + +
НазваниеВыбор
@tour.TourName + +
+
+
+
+
+
+
+
diff --git a/TravelCompany/TravelCompanyWebApp/Views/Home/CreateTour.cshtml b/TravelCompany/TravelCompanyWebApp/Views/Home/CreateTour.cshtml new file mode 100644 index 0000000..d501fe7 --- /dev/null +++ b/TravelCompany/TravelCompanyWebApp/Views/Home/CreateTour.cshtml @@ -0,0 +1,20 @@ +@{ + ViewData["Title"] = "Create tour"; +} +
+

Создание тура

+
+
+
+
Название:
+
+
+
+
Дата тура:
+
+
+
+
+
+
+
diff --git a/TravelCompany/TravelCompanyGuarantorApp/Views/Home/Enter.cshtml b/TravelCompany/TravelCompanyWebApp/Views/Home/Enter.cshtml similarity index 98% rename from TravelCompany/TravelCompanyGuarantorApp/Views/Home/Enter.cshtml rename to TravelCompany/TravelCompanyWebApp/Views/Home/Enter.cshtml index bca6d69..106d3d5 100644 --- a/TravelCompany/TravelCompanyGuarantorApp/Views/Home/Enter.cshtml +++ b/TravelCompany/TravelCompanyWebApp/Views/Home/Enter.cshtml @@ -18,4 +18,4 @@
- + \ No newline at end of file diff --git a/TravelCompany/TravelCompanyWebApp/Views/Home/ExcursionGroups.cshtml b/TravelCompany/TravelCompanyWebApp/Views/Home/ExcursionGroups.cshtml new file mode 100644 index 0000000..66ba4ee --- /dev/null +++ b/TravelCompany/TravelCompanyWebApp/Views/Home/ExcursionGroups.cshtml @@ -0,0 +1,74 @@ +@using TravelAgencyContracts.ViewModels + +@model List + +@{ + ViewData["Title"] = "Excursion groups"; +} + +
+

Экскурсионные группы

+
+ + +
+ @{ + if (Model == null) + { +

Авторизируйтесь

+ return; + } + +

+ Создать экскурсионную группу +

+ + + + + + + + + + + + + + @foreach (var item in Model) + { + + + + + + + + + } + +
+ Номер + + Название + + Описание + + Цена + + Гид +
+ @Html.DisplayFor(modelItem => item.Id) + + @Html.DisplayFor(modelItem => item.ExcursionGroupName) + + @Html.DisplayFor(modelItem => item.ParticipantsAmount) + + @Html.DisplayFor(modelItem => item.GuideFIO) + + + + +
+ } +
\ No newline at end of file diff --git a/TravelCompany/TravelCompanyWebApp/Views/Home/Excursions.cshtml b/TravelCompany/TravelCompanyWebApp/Views/Home/Excursions.cshtml new file mode 100644 index 0000000..302cb2d --- /dev/null +++ b/TravelCompany/TravelCompanyWebApp/Views/Home/Excursions.cshtml @@ -0,0 +1,68 @@ +@using TravelCompanyContracts.ViewModels + +@model List + +@{ + ViewData["Title"] = "Excursions"; +} + +
+

Экскурсии

+
+ + +
+ @{ + if (Model == null) + { +

Авторизируйтесь

+ return; + } + +

+ Создать экскурсию +

+ + + + + + + + + + + + + @foreach (var item in Model) + { + + + + + + + + } + +
+ Номер + + Название + + Описание + + Цена +
+ @Html.DisplayFor(modelItem => item.Id) + + @Html.DisplayFor(modelItem => item.ExcursionName) + + @Html.DisplayFor(modelItem => item.ExcursionPrice) + + + + +
+ } +
\ No newline at end of file diff --git a/TravelCompany/TravelCompanyWebApp/Views/Home/Index.cshtml b/TravelCompany/TravelCompanyWebApp/Views/Home/Index.cshtml new file mode 100644 index 0000000..0e2c1cd --- /dev/null +++ b/TravelCompany/TravelCompanyWebApp/Views/Home/Index.cshtml @@ -0,0 +1,7 @@ +@{ + ViewData["Title"] = "Home Page"; +} + +
+

Турфирма «Иван Сусанин»

+
\ No newline at end of file diff --git a/TravelCompany/TravelCompanyGuarantorApp/Views/Home/Privacy.cshtml b/TravelCompany/TravelCompanyWebApp/Views/Home/Privacy.cshtml similarity index 62% rename from TravelCompany/TravelCompanyGuarantorApp/Views/Home/Privacy.cshtml rename to TravelCompany/TravelCompanyWebApp/Views/Home/Privacy.cshtml index 5f7830a..90c2277 100644 --- a/TravelCompany/TravelCompanyGuarantorApp/Views/Home/Privacy.cshtml +++ b/TravelCompany/TravelCompanyWebApp/Views/Home/Privacy.cshtml @@ -1,4 +1,4 @@ -@using TravelCompanyContracts.ViewModels.Guarantor +@using TravelAgencyContracts.ViewModels @model UserViewModel @@ -10,21 +10,23 @@
-
Логин:
-
+
Логин(почта):
+
Пароль:
-
Почта:
-
+
Номер телефона:
+
+
+
+
ФИО:
+
- - diff --git a/TravelCompany/TravelCompanyGuarantorApp/Views/Home/Register.cshtml b/TravelCompany/TravelCompanyWebApp/Views/Home/Register.cshtml similarity index 50% rename from TravelCompany/TravelCompanyGuarantorApp/Views/Home/Register.cshtml rename to TravelCompany/TravelCompanyWebApp/Views/Home/Register.cshtml index cde6ee4..38f3726 100644 --- a/TravelCompany/TravelCompanyGuarantorApp/Views/Home/Register.cshtml +++ b/TravelCompany/TravelCompanyWebApp/Views/Home/Register.cshtml @@ -7,19 +7,31 @@
-
Логин:
-
+
Имя:
+
+
+
+
Фамилия:
+
+
+
+
Отчество:
+
+
+
+
Email:
+
Пароль:
-
Почта:
-
+
Номер телефона:
+
-
+ \ No newline at end of file diff --git a/TravelCompany/TravelCompanyWebApp/Views/Home/ReportMenu.cshtml b/TravelCompany/TravelCompanyWebApp/Views/Home/ReportMenu.cshtml new file mode 100644 index 0000000..9ebe9b6 --- /dev/null +++ b/TravelCompany/TravelCompanyWebApp/Views/Home/ReportMenu.cshtml @@ -0,0 +1,18 @@ +@{ + ViewData["Title"] = "Report Menu"; +} + + \ No newline at end of file diff --git a/TravelCompany/TravelCompanyWebApp/Views/Home/ReportPlaceTour.cshtml b/TravelCompany/TravelCompanyWebApp/Views/Home/ReportPlaceTour.cshtml new file mode 100644 index 0000000..44a005d --- /dev/null +++ b/TravelCompany/TravelCompanyWebApp/Views/Home/ReportPlaceTour.cshtml @@ -0,0 +1,48 @@ +@using TravelCompanyContracts.ViewModels + +@model List +@{ + ViewData["Title"] = "Places per tour report"; +} +
+

Список мест для посещения по выбранным турам

+
+ +
+ +
+
+ +
+ +
+
Выберите тур:
+
+ +
+
+ + + + + + + + + + @foreach (var tour in Model) + { + + + + + } + +
ТурМесто
@tour.TourName +
    + @foreach (var place in tour.Places) + { +
  • @place
  • + } +
+
\ No newline at end of file diff --git a/TravelCompany/TravelCompanyWebApp/Views/Home/ReportTourPeriod.cshtml b/TravelCompany/TravelCompanyWebApp/Views/Home/ReportTourPeriod.cshtml new file mode 100644 index 0000000..64119ec --- /dev/null +++ b/TravelCompany/TravelCompanyWebApp/Views/Home/ReportTourPeriod.cshtml @@ -0,0 +1,65 @@ +@using TravelCompanyContracts.ViewModels + +@model List +@{ + ViewData["Title"] = "Tours time period report"; +} + +
+

+ Отчет по турам с + расшифровкой по экскурсионным группам и гидам за + период +

+
+ +
+ +
+ +
+
Начальная дата:
+
+ +
+
+
+
Конечная дата:
+
+ +
+
+ + + + + + + + + + + @foreach (var tour in Model) + { + + + + + + } + +
ТурЭкскурсионная группаГид
@tour.TourName +
    + @foreach (var excursionGroup in tour.ExcursionGroups) + { +
  • @excursionGroup
  • + } +
+
+
    + @foreach (var guide in tour.Guides) + { +
  • @guide
  • + } +
+
diff --git a/TravelCompany/TravelCompanyWebApp/Views/Home/Tours.cshtml b/TravelCompany/TravelCompanyWebApp/Views/Home/Tours.cshtml new file mode 100644 index 0000000..2c13b38 --- /dev/null +++ b/TravelCompany/TravelCompanyWebApp/Views/Home/Tours.cshtml @@ -0,0 +1,72 @@ +@using TravelCompanyContracts.ViewModels + +@model List + +@{ + ViewData["Title"] = "Home Page"; +} + +
+

Туры

+
+ + +
+ @{ + if (Model == null) + { +

Авторизируйтесь

+ return; + } + +

+ Создать тур +

+ + + + + + + + + + + + + + @foreach (var item in Model) + { + + + + + + + + + } + +
+ Номер + + Название + + Описание + + Цена + + Дата тура +
+ @Html.DisplayFor(modelItem => item.Id) + + @Html.DisplayFor(modelItem => item.TourName) + + @Html.DisplayFor(modelItem => item.TourDate) + + + + +
+ } +
\ No newline at end of file diff --git a/TravelCompany/TravelCompanyWebApp/Views/Home/UpdateExcursion.cshtml b/TravelCompany/TravelCompanyWebApp/Views/Home/UpdateExcursion.cshtml new file mode 100644 index 0000000..1a27ebd --- /dev/null +++ b/TravelCompany/TravelCompanyWebApp/Views/Home/UpdateExcursion.cshtml @@ -0,0 +1,51 @@ +@using TravelCompanyContracts.ViewModels + +@model List +@{ + ViewData["Title"] = "Update excursion"; +} +
+

Редактирование экскурсии

+
+
+
+
Название:
+
+
+
+
Описание:
+
+
+
+
Цена:
+
+
+
+
Туры
+
+ + + + + + + + + @foreach (var tour in Model) + { + + + + + } + +
НазваниеВыбор
@tour.TourName + +
+
+
+
+
+
+
+
diff --git a/TravelCompany/TravelCompanyWebApp/Views/Home/UpdateExcursionGroup.cshtml b/TravelCompany/TravelCompanyWebApp/Views/Home/UpdateExcursionGroup.cshtml new file mode 100644 index 0000000..49a04a1 --- /dev/null +++ b/TravelCompany/TravelCompanyWebApp/Views/Home/UpdateExcursionGroup.cshtml @@ -0,0 +1,53 @@ +@using TravelCompanyContracts.ViewModels + +@model List +@{ + ViewData["Title"] = "Update excursion group"; +} +
+

Редактирование экскурсионной группы

+
+
+
+
Название:
+
+
+
+
Количество участников:
+
+
+
+
Гид:
+
+ +
+
+
+
Туры
+
+ + + + + + + + + @foreach (var tour in Model) + { + + + + + } + +
НазваниеВыбор
@tour.TourName + +
+
+
+
+
+
+
+
diff --git a/TravelCompany/TravelCompanyWebApp/Views/Home/UpdateTour.cshtml b/TravelCompany/TravelCompanyWebApp/Views/Home/UpdateTour.cshtml new file mode 100644 index 0000000..3876563 --- /dev/null +++ b/TravelCompany/TravelCompanyWebApp/Views/Home/UpdateTour.cshtml @@ -0,0 +1,20 @@ +@{ + ViewData["Title"] = "Update tour"; +} +
+

Редактирование тура

+
+
+
+
Название:
+
+
+
+
Дата тура:
+
+
+
+
+
+
+
diff --git a/TravelCompany/TravelCompanyGuarantorApp/Views/Shared/Error.cshtml b/TravelCompany/TravelCompanyWebApp/Views/Shared/Error.cshtml similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/Views/Shared/Error.cshtml rename to TravelCompany/TravelCompanyWebApp/Views/Shared/Error.cshtml diff --git a/TravelCompany/TravelCompanyWebApp/Views/Shared/_Layout.cshtml b/TravelCompany/TravelCompanyWebApp/Views/Shared/_Layout.cshtml new file mode 100644 index 0000000..56ee7cd --- /dev/null +++ b/TravelCompany/TravelCompanyWebApp/Views/Shared/_Layout.cshtml @@ -0,0 +1,63 @@ + + + + + + @ViewData["Title"] - TravelAgencyWebApp + + + + + + + +
+ +
+
+
+ @RenderBody() +
+
+ + + @RenderSection("Scripts", required: false) + + diff --git a/TravelCompany/TravelCompanyGuarantorApp/Views/Shared/_Layout.cshtml.css b/TravelCompany/TravelCompanyWebApp/Views/Shared/_Layout.cshtml.css similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/Views/Shared/_Layout.cshtml.css rename to TravelCompany/TravelCompanyWebApp/Views/Shared/_Layout.cshtml.css diff --git a/TravelCompany/TravelCompanyGuarantorApp/Views/Shared/_ValidationScriptsPartial.cshtml b/TravelCompany/TravelCompanyWebApp/Views/Shared/_ValidationScriptsPartial.cshtml similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/Views/Shared/_ValidationScriptsPartial.cshtml rename to TravelCompany/TravelCompanyWebApp/Views/Shared/_ValidationScriptsPartial.cshtml diff --git a/TravelCompany/TravelCompanyWebApp/Views/_ViewImports.cshtml b/TravelCompany/TravelCompanyWebApp/Views/_ViewImports.cshtml new file mode 100644 index 0000000..c5b8df9 --- /dev/null +++ b/TravelCompany/TravelCompanyWebApp/Views/_ViewImports.cshtml @@ -0,0 +1,3 @@ +@using TravelCompanyWebApp +@using TravelCompanyWebApp.Models +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers diff --git a/TravelCompany/TravelCompanyGuarantorApp/Views/_ViewStart.cshtml b/TravelCompany/TravelCompanyWebApp/Views/_ViewStart.cshtml similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/Views/_ViewStart.cshtml rename to TravelCompany/TravelCompanyWebApp/Views/_ViewStart.cshtml diff --git a/TravelCompany/TravelCompanyGuarantorApp/appsettings.Development.json b/TravelCompany/TravelCompanyWebApp/appsettings.Development.json similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/appsettings.Development.json rename to TravelCompany/TravelCompanyWebApp/appsettings.Development.json diff --git a/TravelCompany/TravelCompanyGuarantorApp/appsettings.json b/TravelCompany/TravelCompanyWebApp/appsettings.json similarity index 65% rename from TravelCompany/TravelCompanyGuarantorApp/appsettings.json rename to TravelCompany/TravelCompanyWebApp/appsettings.json index 4471e2a..10f68b8 100644 --- a/TravelCompany/TravelCompanyGuarantorApp/appsettings.json +++ b/TravelCompany/TravelCompanyWebApp/appsettings.json @@ -5,6 +5,5 @@ "Microsoft.AspNetCore": "Warning" } }, - "AllowedHosts": "*", - "IPAddress": "http://localhost:5055/" + "AllowedHosts": "*" } diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/css/site.css b/TravelCompany/TravelCompanyWebApp/wwwroot/css/site.css similarity index 76% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/css/site.css rename to TravelCompany/TravelCompanyWebApp/wwwroot/css/site.css index f27e5ad..27669a6 100644 --- a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/css/site.css +++ b/TravelCompany/TravelCompanyWebApp/wwwroot/css/site.css @@ -1,10 +1,10 @@ html { - font-size: 14px; + font-size: 15px; } @media (min-width: 768px) { html { - font-size: 16px; + font-size: 15px; } } diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/favicon.ico b/TravelCompany/TravelCompanyWebApp/wwwroot/favicon.ico similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/favicon.ico rename to TravelCompany/TravelCompanyWebApp/wwwroot/favicon.ico diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/js/site.js b/TravelCompany/TravelCompanyWebApp/wwwroot/js/site.js similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/js/site.js rename to TravelCompany/TravelCompanyWebApp/wwwroot/js/site.js diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/LICENSE b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/LICENSE similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/LICENSE rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/LICENSE diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css.map b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css.map similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css.map rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css.map diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css.map b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css.map similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css.map rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css.map diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css.map b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css.map similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css.map rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css.map diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css.map b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css.map similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css.map rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css.map diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css.map b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css.map similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css.map rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css.map diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css.map b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css.map similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css.map rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css.map diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css.map b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css.map similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css.map rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css.map diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css.map b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css.map similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css.map rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css.map diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css.map b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css.map similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css.map rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css.map diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css.map b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css.map similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css.map rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css.map diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css.map b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css.map similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css.map rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css.map diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap.css b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap.css similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap.css rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap.css diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap.css.map b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap.css.map similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap.css.map rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap.css.map diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css.map b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css.map similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css.map rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css.map diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css.map b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css.map similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css.map rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css.map diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css.map b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css.map similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css.map rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css.map diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js.map b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js.map similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js.map rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js.map diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js.map b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js.map similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js.map rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js.map diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js.map b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js.map similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js.map rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js.map diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js.map b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js.map similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js.map rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js.map diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/js/bootstrap.js b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/js/bootstrap.js similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/js/bootstrap.js rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/js/bootstrap.js diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/js/bootstrap.js.map b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/js/bootstrap.js.map similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/js/bootstrap.js.map rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/js/bootstrap.js.map diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js.map b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js.map similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js.map rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js.map diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/jquery-validation/LICENSE.md b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/jquery-validation/LICENSE.md similarity index 100% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/jquery-validation/LICENSE.md rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/jquery-validation/LICENSE.md diff --git a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/jquery-validation/dist/additional-methods.js b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/jquery-validation/dist/additional-methods.js similarity index 75% rename from TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/jquery-validation/dist/additional-methods.js rename to TravelCompany/TravelCompanyWebApp/wwwroot/lib/jquery-validation/dist/additional-methods.js index e129bc0..c6a7229 100644 --- a/TravelCompany/TravelCompanyGuarantorApp/wwwroot/lib/jquery-validation/dist/additional-methods.js +++ b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/jquery-validation/dist/additional-methods.js @@ -1,9 +1,9 @@ /*! - * jQuery Validation Plugin v1.17.0 + * jQuery Validation Plugin v1.19.5 * * https://jqueryvalidation.org/ * - * Copyright (c) 2017 Jörn Zaefferer + * Copyright (c) 2022 Jörn Zaefferer * Released under the MIT license */ (function( factory ) { @@ -43,6 +43,38 @@ }() ); +/** + * This is used in the United States to process payments, deposits, + * or transfers using the Automated Clearing House (ACH) or Fedwire + * systems. A very common use case would be to validate a form for + * an ACH bill payment. + */ +$.validator.addMethod( "abaRoutingNumber", function( value ) { + var checksum = 0; + var tokens = value.split( "" ); + var length = tokens.length; + + // Length Check + if ( length !== 9 ) { + return false; + } + + // Calc the checksum + // https://en.wikipedia.org/wiki/ABA_routing_transit_number + for ( var i = 0; i < length; i += 3 ) { + checksum += parseInt( tokens[ i ], 10 ) * 3 + + parseInt( tokens[ i + 1 ], 10 ) * 7 + + parseInt( tokens[ i + 2 ], 10 ); + } + + // If not zero and divisible by 10 then valid + if ( checksum !== 0 && checksum % 10 === 0 ) { + return true; + } + + return false; +}, "Please enter a valid routing number." ); + // Accept a value from a file input based on a required mimetype $.validator.addMethod( "accept", function( value, element, param ) { @@ -87,7 +119,7 @@ $.validator.addMethod( "accept", function( value, element, param ) { $.validator.addMethod( "alphanumeric", function( value, element ) { return this.optional( element ) || /^\w+$/i.test( value ); -}, "Letters, numbers, and underscores only please" ); +}, "Letters, numbers, and underscores only please." ); /* * Dutch bank account numbers (not 'giro' numbers) have 9 digits @@ -114,13 +146,13 @@ $.validator.addMethod( "bankaccountNL", function( value, element ) { sum = sum + factor * digit; } return sum % 11 === 0; -}, "Please specify a valid bank account number" ); +}, "Please specify a valid bank account number." ); $.validator.addMethod( "bankorgiroaccountNL", function( value, element ) { return this.optional( element ) || ( $.validator.methods.bankaccountNL.call( this, value, element ) ) || ( $.validator.methods.giroaccountNL.call( this, value, element ) ); -}, "Please specify a valid bank or giro account number" ); +}, "Please specify a valid bank or giro account number." ); /** * BIC is the business identifier code (ISO 9362). This BIC check is not a guarantee for authenticity. @@ -139,7 +171,7 @@ $.validator.addMethod( "bankorgiroaccountNL", function( value, element ) { */ $.validator.addMethod( "bic", function( value, element ) { return this.optional( element ) || /^([A-Z]{6}[A-Z2-9][A-NP-Z1-9])(X{3}|[A-WY-Z0-9][A-Z0-9]{2})?$/.test( value.toUpperCase() ); -}, "Please specify a valid BIC code" ); +}, "Please specify a valid BIC code." ); /* * Código de identificación fiscal ( CIF ) is the tax identification code for Spanish legal entities @@ -256,11 +288,141 @@ $.validator.addMethod( "cifES", function( value, element ) { }, "Please specify a valid CIF number." ); +/* + * Brazillian CNH number (Carteira Nacional de Habilitacao) is the License Driver number. + * CNH numbers have 11 digits in total: 9 numbers followed by 2 check numbers that are being used for validation. + */ +$.validator.addMethod( "cnhBR", function( value ) { + + // Removing special characters from value + value = value.replace( /([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g, "" ); + + // Checking value to have 11 digits only + if ( value.length !== 11 ) { + return false; + } + + var sum = 0, dsc = 0, firstChar, + firstCN, secondCN, i, j, v; + + firstChar = value.charAt( 0 ); + + if ( new Array( 12 ).join( firstChar ) === value ) { + return false; + } + + // Step 1 - using first Check Number: + for ( i = 0, j = 9, v = 0; i < 9; ++i, --j ) { + sum += +( value.charAt( i ) * j ); + } + + firstCN = sum % 11; + if ( firstCN >= 10 ) { + firstCN = 0; + dsc = 2; + } + + sum = 0; + for ( i = 0, j = 1, v = 0; i < 9; ++i, ++j ) { + sum += +( value.charAt( i ) * j ); + } + + secondCN = sum % 11; + if ( secondCN >= 10 ) { + secondCN = 0; + } else { + secondCN = secondCN - dsc; + } + + return ( String( firstCN ).concat( secondCN ) === value.substr( -2 ) ); + +}, "Please specify a valid CNH number." ); + +/* + * Brazillian value number (Cadastrado de Pessoas Juridica). + * value numbers have 14 digits in total: 12 numbers followed by 2 check numbers that are being used for validation. + */ +$.validator.addMethod( "cnpjBR", function( value, element ) { + "use strict"; + + if ( this.optional( element ) ) { + return true; + } + + // Removing no number + value = value.replace( /[^\d]+/g, "" ); + + // Checking value to have 14 digits only + if ( value.length !== 14 ) { + return false; + } + + // Elimina values invalidos conhecidos + if ( value === "00000000000000" || + value === "11111111111111" || + value === "22222222222222" || + value === "33333333333333" || + value === "44444444444444" || + value === "55555555555555" || + value === "66666666666666" || + value === "77777777777777" || + value === "88888888888888" || + value === "99999999999999" ) { + return false; + } + + // Valida DVs + var tamanho = ( value.length - 2 ); + var numeros = value.substring( 0, tamanho ); + var digitos = value.substring( tamanho ); + var soma = 0; + var pos = tamanho - 7; + + for ( var i = tamanho; i >= 1; i-- ) { + soma += numeros.charAt( tamanho - i ) * pos--; + if ( pos < 2 ) { + pos = 9; + } + } + + var resultado = soma % 11 < 2 ? 0 : 11 - soma % 11; + + if ( resultado !== parseInt( digitos.charAt( 0 ), 10 ) ) { + return false; + } + + tamanho = tamanho + 1; + numeros = value.substring( 0, tamanho ); + soma = 0; + pos = tamanho - 7; + + for ( var il = tamanho; il >= 1; il-- ) { + soma += numeros.charAt( tamanho - il ) * pos--; + if ( pos < 2 ) { + pos = 9; + } + } + + resultado = soma % 11 < 2 ? 0 : 11 - soma % 11; + + if ( resultado !== parseInt( digitos.charAt( 1 ), 10 ) ) { + return false; + } + + return true; + +}, "Please specify a CNPJ value number." ); + /* * Brazillian CPF number (Cadastrado de Pessoas Físicas) is the equivalent of a Brazilian tax registration number. * CPF numbers have 11 digits in total: 9 numbers followed by 2 check numbers that are being used for validation. */ -$.validator.addMethod( "cpfBR", function( value ) { +$.validator.addMethod( "cpfBR", function( value, element ) { + "use strict"; + + if ( this.optional( element ) ) { + return true; + } // Removing special characters from value value = value.replace( /([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g, "" ); @@ -315,7 +477,7 @@ $.validator.addMethod( "cpfBR", function( value ) { } return false; -}, "Please specify a valid CPF number" ); +}, "Please specify a valid CPF number." ); // https://jqueryvalidation.org/creditcard-method/ // based on https://en.wikipedia.org/wiki/Luhn_algorithm @@ -337,7 +499,7 @@ $.validator.addMethod( "creditcard", function( value, element ) { value = value.replace( /\D/g, "" ); // Basing min and max length on - // https://developer.ean.com/general_info/Valid_Credit_Card_Types + // https://dev.ean.com/general-info/valid-card-types/ if ( value.length < 13 || value.length > 19 ) { return false; } @@ -359,7 +521,7 @@ $.validator.addMethod( "creditcard", function( value, element ) { }, "Please enter a valid credit card number." ); /* NOTICE: Modified version of Castle.Components.Validator.CreditCardValidator - * Redistributed under the the Apache License 2.0 at http://www.apache.org/licenses/LICENSE-2.0 + * Redistributed under the Apache License 2.0 at http://www.apache.org/licenses/LICENSE-2.0 * Valid Types: mastercard, visa, amex, dinersclub, enroute, discover, jcb, unknown, all (overrides all other settings) */ $.validator.addMethod( "creditcardtypes", function( value, element, param ) { @@ -398,7 +560,7 @@ $.validator.addMethod( "creditcardtypes", function( value, element, param ) { if ( param.all ) { validTypes = 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040 | 0x0080; } - if ( validTypes & 0x0001 && /^(5[12345])/.test( value ) ) { // Mastercard + if ( validTypes & 0x0001 && ( /^(5[12345])/.test( value ) || /^(2[234567])/.test( value ) ) ) { // Mastercard return value.length === 16; } if ( validTypes & 0x0002 && /^(4)/.test( value ) ) { // Visa @@ -468,7 +630,7 @@ $.validator.addMethod( "currency", function( value, element, param ) { regex = new RegExp( regex ); return this.optional( element ) || regex.test( value ); -}, "Please specify a valid currency" ); +}, "Please specify a valid currency." ); $.validator.addMethod( "dateFA", function( value, element ) { return this.optional( element ) || /^[1-4]\d{3}\/((0?[1-6]\/((3[0-1])|([1-2][0-9])|(0?[1-9])))|((1[0-2]|(0?[7-9]))\/(30|([1-2][0-9])|(0?[1-9]))))$/.test( value ); @@ -529,7 +691,31 @@ $.validator.addMethod( "extension", function( value, element, param ) { */ $.validator.addMethod( "giroaccountNL", function( value, element ) { return this.optional( element ) || /^[0-9]{1,7}$/.test( value ); -}, "Please specify a valid giro account number" ); +}, "Please specify a valid giro account number." ); + +$.validator.addMethod( "greaterThan", function( value, element, param ) { + var target = $( param ); + + if ( this.settings.onfocusout && target.not( ".validate-greaterThan-blur" ).length ) { + target.addClass( "validate-greaterThan-blur" ).on( "blur.validate-greaterThan", function() { + $( element ).valid(); + } ); + } + + return value > target.val(); +}, "Please enter a greater value." ); + +$.validator.addMethod( "greaterThanEqual", function( value, element, param ) { + var target = $( param ); + + if ( this.settings.onfocusout && target.not( ".validate-greaterThanEqual-blur" ).length ) { + target.addClass( "validate-greaterThanEqual-blur" ).on( "blur.validate-greaterThanEqual", function() { + $( element ).valid(); + } ); + } + + return value >= target.val(); +}, "Please enter a greater value." ); /** * IBAN is the international bank account number. @@ -666,11 +852,11 @@ $.validator.addMethod( "iban", function( value, element ) { cRest = cOperator % 97; } return cRest === 1; -}, "Please specify a valid IBAN" ); +}, "Please specify a valid IBAN." ); $.validator.addMethod( "integer", function( value, element ) { return this.optional( element ) || /^-?\d+$/.test( value ); -}, "A positive or negative non-decimal number please" ); +}, "A positive or negative non-decimal number please." ); $.validator.addMethod( "ipv4", function( value, element ) { return this.optional( element ) || /^(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)$/i.test( value ); @@ -680,17 +866,103 @@ $.validator.addMethod( "ipv6", function( value, element ) { return this.optional( element ) || /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test( value ); }, "Please enter a valid IP v6 address." ); +$.validator.addMethod( "lessThan", function( value, element, param ) { + var target = $( param ); + + if ( this.settings.onfocusout && target.not( ".validate-lessThan-blur" ).length ) { + target.addClass( "validate-lessThan-blur" ).on( "blur.validate-lessThan", function() { + $( element ).valid(); + } ); + } + + return value < target.val(); +}, "Please enter a lesser value." ); + +$.validator.addMethod( "lessThanEqual", function( value, element, param ) { + var target = $( param ); + + if ( this.settings.onfocusout && target.not( ".validate-lessThanEqual-blur" ).length ) { + target.addClass( "validate-lessThanEqual-blur" ).on( "blur.validate-lessThanEqual", function() { + $( element ).valid(); + } ); + } + + return value <= target.val(); +}, "Please enter a lesser value." ); + $.validator.addMethod( "lettersonly", function( value, element ) { return this.optional( element ) || /^[a-z]+$/i.test( value ); -}, "Letters only please" ); +}, "Letters only please." ); $.validator.addMethod( "letterswithbasicpunc", function( value, element ) { return this.optional( element ) || /^[a-z\-.,()'"\s]+$/i.test( value ); -}, "Letters or punctuation only please" ); +}, "Letters or punctuation only please." ); + +// Limit the number of files in a FileList. +$.validator.addMethod( "maxfiles", function( value, element, param ) { + if ( this.optional( element ) ) { + return true; + } + + if ( $( element ).attr( "type" ) === "file" ) { + if ( element.files && element.files.length > param ) { + return false; + } + } + + return true; +}, $.validator.format( "Please select no more than {0} files." ) ); + +// Limit the size of each individual file in a FileList. +$.validator.addMethod( "maxsize", function( value, element, param ) { + if ( this.optional( element ) ) { + return true; + } + + if ( $( element ).attr( "type" ) === "file" ) { + if ( element.files && element.files.length ) { + for ( var i = 0; i < element.files.length; i++ ) { + if ( element.files[ i ].size > param ) { + return false; + } + } + } + } + + return true; +}, $.validator.format( "File size must not exceed {0} bytes each." ) ); + +// Limit the size of all files in a FileList. +$.validator.addMethod( "maxsizetotal", function( value, element, param ) { + if ( this.optional( element ) ) { + return true; + } + + if ( $( element ).attr( "type" ) === "file" ) { + if ( element.files && element.files.length ) { + var totalSize = 0; + + for ( var i = 0; i < element.files.length; i++ ) { + totalSize += element.files[ i ].size; + if ( totalSize > param ) { + return false; + } + } + } + } + + return true; +}, $.validator.format( "Total size of all files must not exceed {0} bytes." ) ); + $.validator.addMethod( "mobileNL", function( value, element ) { return this.optional( element ) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)6((\s|\s?\-\s?)?[0-9]){8}$/.test( value ); -}, "Please specify a valid mobile number" ); +}, "Please specify a valid mobile number." ); + +$.validator.addMethod( "mobileRU", function( phone_number, element ) { + var ruPhone_number = phone_number.replace( /\(|\)|\s+|-/g, "" ); + return this.optional( element ) || ruPhone_number.length > 9 && /^((\+7|7|8)+([0-9]){10})$/.test( ruPhone_number ); +}, "Please specify a valid mobile number." ); /* For UK phone functions, do the following server side processing: * Compare original input with this RegEx pattern: @@ -704,7 +976,7 @@ $.validator.addMethod( "mobileUK", function( phone_number, element ) { phone_number = phone_number.replace( /\(|\)|\s+|-/g, "" ); return this.optional( element ) || phone_number.length > 9 && phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?|0)7(?:[1345789]\d{2}|624)\s?\d{3}\s?\d{3})$/ ); -}, "Please specify a valid mobile number" ); +}, "Please specify a valid mobile number." ); $.validator.addMethod( "netmask", function( value, element ) { return this.optional( element ) || /^(254|252|248|240|224|192|128)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(254|252|248|240|224|192|128|0)/i.test( value ); @@ -804,13 +1076,71 @@ $.validator.addMethod( "nipPL", function( value ) { return ( intControlNr === parseInt( value[ 9 ], 10 ) ); }, "Please specify a valid NIP number." ); +/** + * Created for project jquery-validation. + * @Description Brazillian PIS or NIS number (Número de Identificação Social Pis ou Pasep) is the equivalent of a + * Brazilian tax registration number NIS of PIS numbers have 11 digits in total: 10 numbers followed by 1 check numbers + * that are being used for validation. + * @copyright (c) 21/08/2018 13:14, Cleiton da Silva Mendonça + * @author Cleiton da Silva Mendonça + * @link http://gitlab.com/csmendonca Gitlab of Cleiton da Silva Mendonça + * @link http://github.com/csmendonca Github of Cleiton da Silva Mendonça + */ +$.validator.addMethod( "nisBR", function( value ) { + var number; + var cn; + var sum = 0; + var dv; + var count; + var multiplier; + + // Removing special characters from value + value = value.replace( /([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g, "" ); + + // Checking value to have 11 digits only + if ( value.length !== 11 ) { + return false; + } + + //Get check number of value + cn = parseInt( value.substring( 10, 11 ), 10 ); + + //Get number with 10 digits of the value + number = parseInt( value.substring( 0, 10 ), 10 ); + + for ( count = 2; count < 12; count++ ) { + multiplier = count; + if ( count === 10 ) { + multiplier = 2; + } + if ( count === 11 ) { + multiplier = 3; + } + sum += ( ( number % 10 ) * multiplier ); + number = parseInt( number / 10, 10 ); + } + dv = ( sum % 11 ); + + if ( dv > 1 ) { + dv = ( 11 - dv ); + } else { + dv = 0; + } + + if ( cn === dv ) { + return true; + } else { + return false; + } +}, "Please specify a valid NIS/PIS number." ); + $.validator.addMethod( "notEqualTo", function( value, element, param ) { return this.optional( element ) || !$.validator.methods.equalTo.call( this, value, element, param ); }, "Please enter a different value, values must not be the same." ); $.validator.addMethod( "nowhitespace", function( value, element ) { return this.optional( element ) || /^\S+$/i.test( value ); -}, "No white space please" ); +}, "No white space please." ); /** * Return true if the field value matches the given format RegExp @@ -842,6 +1172,30 @@ $.validator.addMethod( "phoneNL", function( value, element ) { return this.optional( element ) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)[1-9]((\s|\s?\-\s?)?[0-9]){8}$/.test( value ); }, "Please specify a valid phone number." ); +/** + * Polish telephone numbers have 9 digits. + * + * Mobile phone numbers starts with following digits: + * 45, 50, 51, 53, 57, 60, 66, 69, 72, 73, 78, 79, 88. + * + * Fixed-line numbers starts with area codes: + * 12, 13, 14, 15, 16, 17, 18, 22, 23, 24, 25, 29, 32, 33, + * 34, 41, 42, 43, 44, 46, 48, 52, 54, 55, 56, 58, 59, 61, + * 62, 63, 65, 67, 68, 71, 74, 75, 76, 77, 81, 82, 83, 84, + * 85, 86, 87, 89, 91, 94, 95. + * + * Ministry of National Defence numbers and VoIP numbers starts with 26 and 39. + * + * Excludes intelligent networks (premium rate, shared cost, free phone numbers). + * + * Poland National Numbering Plan http://www.itu.int/oth/T02020000A8/en + */ +$.validator.addMethod( "phonePL", function( phone_number, element ) { + phone_number = phone_number.replace( /\s+/g, "" ); + var regexp = /^(?:(?:(?:\+|00)?48)|(?:\(\+?48\)))?(?:1[2-8]|2[2-69]|3[2-49]|4[1-68]|5[0-9]|6[0-35-9]|[7-8][1-9]|9[145])\d{7}$/; + return this.optional( element ) || regexp.test( phone_number ); +}, "Please specify a valid phone number." ); + /* For UK phone functions, do the following server side processing: * Compare original input with this RegEx pattern: * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$ @@ -856,7 +1210,7 @@ $.validator.addMethod( "phonesUK", function( phone_number, element ) { phone_number = phone_number.replace( /\(|\)|\s+|-/g, "" ); return this.optional( element ) || phone_number.length > 9 && phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[1345789]\d{8}|624\d{6})))$/ ); -}, "Please specify a valid uk phone number" ); +}, "Please specify a valid uk phone number." ); /* For UK phone functions, do the following server side processing: * Compare original input with this RegEx pattern: @@ -870,7 +1224,7 @@ $.validator.addMethod( "phoneUK", function( phone_number, element ) { phone_number = phone_number.replace( /\(|\)|\s+|-/g, "" ); return this.optional( element ) || phone_number.length > 9 && phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?)|(?:\(?0))(?:\d{2}\)?\s?\d{4}\s?\d{4}|\d{3}\)?\s?\d{3}\s?\d{3,4}|\d{4}\)?\s?(?:\d{5}|\d{3}\s?\d{3})|\d{5}\)?\s?\d{4,5})$/ ); -}, "Please specify a valid phone number" ); +}, "Please specify a valid phone number." ); /** * Matches US phone number format @@ -891,8 +1245,8 @@ $.validator.addMethod( "phoneUK", function( phone_number, element ) { $.validator.addMethod( "phoneUS", function( phone_number, element ) { phone_number = phone_number.replace( /\s+/g, "" ); return this.optional( element ) || phone_number.length > 9 && - phone_number.match( /^(\+?1-?)?(\([2-9]([02-9]\d|1[02-9])\)|[2-9]([02-9]\d|1[02-9]))-?[2-9]([02-9]\d|1[02-9])-?\d{4}$/ ); -}, "Please specify a valid phone number" ); + phone_number.match( /^(\+?1-?)?(\([2-9]([02-9]\d|1[02-9])\)|[2-9]([02-9]\d|1[02-9]))-?[2-9]\d{2}-?\d{4}$/ ); +}, "Please specify a valid phone number." ); /* * Valida CEPs do brasileiros: @@ -921,21 +1275,21 @@ $.validator.addMethod( "postalcodeBR", function( cep_value, element ) { */ $.validator.addMethod( "postalCodeCA", function( value, element ) { return this.optional( element ) || /^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ] *\d[ABCEGHJKLMNPRSTVWXYZ]\d$/i.test( value ); -}, "Please specify a valid postal code" ); +}, "Please specify a valid postal code." ); /* Matches Italian postcode (CAP) */ $.validator.addMethod( "postalcodeIT", function( value, element ) { return this.optional( element ) || /^\d{5}$/.test( value ); -}, "Please specify a valid postal code" ); +}, "Please specify a valid postal code." ); $.validator.addMethod( "postalcodeNL", function( value, element ) { return this.optional( element ) || /^[1-9][0-9]{3}\s?[a-zA-Z]{2}$/.test( value ); -}, "Please specify a valid postal code" ); +}, "Please specify a valid postal code." ); // Matches UK postcode. Does not match to UK Channel Islands that have their own postcodes (non standard UK) $.validator.addMethod( "postcodeUK", function( value, element ) { return this.optional( element ) || /^((([A-PR-UWYZ][0-9])|([A-PR-UWYZ][0-9][0-9])|([A-PR-UWYZ][A-HK-Y][0-9])|([A-PR-UWYZ][A-HK-Y][0-9][0-9])|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))\s?([0-9][ABD-HJLNP-UW-Z]{2})|(GIR)\s?(0AA))$/i.test( value ); -}, "Please specify a valid UK postcode" ); +}, "Please specify a valid UK postcode." ); /* * Lets you say "at least X inputs that match selector Y must be filled." @@ -1072,24 +1426,24 @@ $.validator.addMethod( "stateUS", function( value, element, options ) { regex = caseSensitive ? new RegExp( regex ) : new RegExp( regex, "i" ); return this.optional( element ) || regex.test( value ); -}, "Please specify a valid state" ); +}, "Please specify a valid state." ); // TODO check if value starts with <, otherwise don't try stripping anything $.validator.addMethod( "strippedminlength", function( value, element, param ) { return $( value ).text().length >= param; -}, $.validator.format( "Please enter at least {0} characters" ) ); +}, $.validator.format( "Please enter at least {0} characters." ) ); $.validator.addMethod( "time", function( value, element ) { return this.optional( element ) || /^([01]\d|2[0-3]|[0-9])(:[0-5]\d){1,2}$/.test( value ); -}, "Please enter a valid time, between 00:00 and 23:59" ); +}, "Please enter a valid time, between 00:00 and 23:59." ); $.validator.addMethod( "time12h", function( value, element ) { return this.optional( element ) || /^((0?[1-9]|1[012])(:[0-5]\d){1,2}(\ ?[AP]M))$/i.test( value ); -}, "Please enter a valid time in 12-hour am/pm format" ); +}, "Please enter a valid time in 12-hour am/pm format." ); // Same as url, but TLD is optional $.validator.addMethod( "url2", function( value, element ) { - return this.optional( element ) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test( value ); + return this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\/\/)(?:(?:[^\]\[?\/<~#`!@$^&*()+=}|:";',>{ ]|%[0-9A-Fa-f]{2})+(?::(?:[^\]\[?\/<~#`!@$^&*()+=}|:";',>{ ]|%[0-9A-Fa-f]{2})*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?)|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff])|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62}\.)))(?::\d{2,5})?(?:[/?#]\S*)?$/i.test( value ); }, $.validator.messages.url ); /** @@ -1149,10 +1503,10 @@ $.validator.addMethod( "vinUS", function( v ) { $.validator.addMethod( "zipcodeUS", function( value, element ) { return this.optional( element ) || /^\d{5}(-\d{4})?$/.test( value ); -}, "The specified US ZIP Code is invalid" ); +}, "The specified US ZIP Code is invalid." ); $.validator.addMethod( "ziprange", function( value, element ) { return this.optional( element ) || /^90[2-5]\d\{2\}-\d{4}$/.test( value ); -}, "Your ZIP-code must be in the range 902xx-xxxx to 905xx-xxxx" ); +}, "Your ZIP-code must be in the range 902xx-xxxx to 905xx-xxxx." ); return $; })); \ No newline at end of file diff --git a/TravelCompany/TravelCompanyWebApp/wwwroot/lib/jquery-validation/dist/additional-methods.min.js b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/jquery-validation/dist/additional-methods.min.js new file mode 100644 index 0000000..80f14b5 --- /dev/null +++ b/TravelCompany/TravelCompanyWebApp/wwwroot/lib/jquery-validation/dist/additional-methods.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.19.5 - 7/1/2022 + * https://jqueryvalidation.org/ + * Copyright (c) 2022 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","./jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return function(){function b(a){return a.replace(/<.[^<>]*?>/g," ").replace(/ | /gi," ").replace(/[.(),;:!?%#$'\"_+=\/\-“”’]*/g,"")}a.validator.addMethod("maxWords",function(a,c,d){return this.optional(c)||b(a).match(/\b\w+\b/g).length<=d},a.validator.format("Please enter {0} words or less.")),a.validator.addMethod("minWords",function(a,c,d){return this.optional(c)||b(a).match(/\b\w+\b/g).length>=d},a.validator.format("Please enter at least {0} words.")),a.validator.addMethod("rangeWords",function(a,c,d){var e=b(a),f=/\b\w+\b/g;return this.optional(c)||e.match(f).length>=d[0]&&e.match(f).length<=d[1]},a.validator.format("Please enter between {0} and {1} words."))}(),a.validator.addMethod("abaRoutingNumber",function(a){var b=0,c=a.split(""),d=c.length;if(9!==d)return!1;for(var e=0;e9?"0":f,g="JABCDEFGHI".substr(f,1).toString(),i.match(/[ABEH]/)?k===f:i.match(/[KPQS]/)?k===g:k===f||k===g},"Please specify a valid CIF number."),a.validator.addMethod("cnhBR",function(a){if(a=a.replace(/([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g,""),11!==a.length)return!1;var b,c,d,e,f,g,h=0,i=0;if(b=a.charAt(0),new Array(12).join(b)===a)return!1;for(e=0,f=9,g=0;e<9;++e,--f)h+=+(a.charAt(e)*f);for(c=h%11,c>=10&&(c=0,i=2),h=0,e=0,f=1,g=0;e<9;++e,++f)h+=+(a.charAt(e)*f);return d=h%11,d>=10?d=0:d-=i,String(c).concat(d)===a.substr(-2)},"Please specify a valid CNH number."),a.validator.addMethod("cnpjBR",function(a,b){"use strict";if(this.optional(b))return!0;if(a=a.replace(/[^\d]+/g,""),14!==a.length)return!1;if("00000000000000"===a||"11111111111111"===a||"22222222222222"===a||"33333333333333"===a||"44444444444444"===a||"55555555555555"===a||"66666666666666"===a||"77777777777777"===a||"88888888888888"===a||"99999999999999"===a)return!1;for(var c=a.length-2,d=a.substring(0,c),e=a.substring(c),f=0,g=c-7,h=c;h>=1;h--)f+=d.charAt(c-h)*g--,g<2&&(g=9);var i=f%11<2?0:11-f%11;if(i!==parseInt(e.charAt(0),10))return!1;c+=1,d=a.substring(0,c),f=0,g=c-7;for(var j=c;j>=1;j--)f+=d.charAt(c-j)*g--,g<2&&(g=9);return i=f%11<2?0:11-f%11,i===parseInt(e.charAt(1),10)},"Please specify a CNPJ value number."),a.validator.addMethod("cpfBR",function(a,b){"use strict";if(this.optional(b))return!0;if(a=a.replace(/([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g,""),11!==a.length)return!1;var c,d,e,f,g=0;if(c=parseInt(a.substring(9,10),10),d=parseInt(a.substring(10,11),10),e=function(a,b){var c=10*a%11;return 10!==c&&11!==c||(c=0),c===b},""===a||"00000000000"===a||"11111111111"===a||"22222222222"===a||"33333333333"===a||"44444444444"===a||"55555555555"===a||"66666666666"===a||"77777777777"===a||"88888888888"===a||"99999999999"===a)return!1;for(f=1;f<=9;f++)g+=parseInt(a.substring(f-1,f),10)*(11-f);if(e(g,c)){for(g=0,f=1;f<=10;f++)g+=parseInt(a.substring(f-1,f),10)*(12-f);return e(g,d)}return!1},"Please specify a valid CPF number."),a.validator.addMethod("creditcard",function(a,b){if(this.optional(b))return"dependency-mismatch";if(/[^0-9 \-]+/.test(a))return!1;var c,d,e=0,f=0,g=!1;if(a=a.replace(/\D/g,""),a.length<13||a.length>19)return!1;for(c=a.length-1;c>=0;c--)d=a.charAt(c),f=parseInt(d,10),g&&(f*=2)>9&&(f-=9),e+=f,g=!g;return e%10===0},"Please enter a valid credit card number."),a.validator.addMethod("creditcardtypes",function(a,b,c){if(/[^0-9\-]+/.test(a))return!1;a=a.replace(/\D/g,"");var d=0;return c.mastercard&&(d|=1),c.visa&&(d|=2),c.amex&&(d|=4),c.dinersclub&&(d|=8),c.enroute&&(d|=16),c.discover&&(d|=32),c.jcb&&(d|=64),c.unknown&&(d|=128),c.all&&(d=255),1&d&&(/^(5[12345])/.test(a)||/^(2[234567])/.test(a))?16===a.length:2&d&&/^(4)/.test(a)?16===a.length:4&d&&/^(3[47])/.test(a)?15===a.length:8&d&&/^(3(0[012345]|[68]))/.test(a)?14===a.length:16&d&&/^(2(014|149))/.test(a)?15===a.length:32&d&&/^(6011)/.test(a)?16===a.length:64&d&&/^(3)/.test(a)?16===a.length:64&d&&/^(2131|1800)/.test(a)?15===a.length:!!(128&d)},"Please enter a valid credit card number."),a.validator.addMethod("currency",function(a,b,c){var d,e="string"==typeof c,f=e?c:c[0],g=!!e||c[1];return f=f.replace(/,/g,""),f=g?f+"]":f+"]?",d="^["+f+"([1-9]{1}[0-9]{0,2}(\\,[0-9]{3})*(\\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,}(\\.[0-9]{0,2})?|0(\\.[0-9]{0,2})?|(\\.[0-9]{1,2})?)$",d=new RegExp(d),this.optional(b)||d.test(a)},"Please specify a valid currency."),a.validator.addMethod("dateFA",function(a,b){return this.optional(b)||/^[1-4]\d{3}\/((0?[1-6]\/((3[0-1])|([1-2][0-9])|(0?[1-9])))|((1[0-2]|(0?[7-9]))\/(30|([1-2][0-9])|(0?[1-9]))))$/.test(a)},a.validator.messages.date),a.validator.addMethod("dateITA",function(a,b){var c,d,e,f,g,h=!1,i=/^\d{1,2}\/\d{1,2}\/\d{4}$/;return i.test(a)?(c=a.split("/"),d=parseInt(c[0],10),e=parseInt(c[1],10),f=parseInt(c[2],10),g=new Date(Date.UTC(f,e-1,d,12,0,0,0)),h=g.getUTCFullYear()===f&&g.getUTCMonth()===e-1&&g.getUTCDate()===d):h=!1,this.optional(b)||h},a.validator.messages.date),a.validator.addMethod("dateNL",function(a,b){return this.optional(b)||/^(0?[1-9]|[12]\d|3[01])[\.\/\-](0?[1-9]|1[012])[\.\/\-]([12]\d)?(\d\d)$/.test(a)},a.validator.messages.date),a.validator.addMethod("extension",function(a,b,c){return c="string"==typeof c?c.replace(/,/g,"|"):"png|jpe?g|gif",this.optional(b)||a.match(new RegExp("\\.("+c+")$","i"))},a.validator.format("Please enter a value with a valid extension.")),a.validator.addMethod("giroaccountNL",function(a,b){return this.optional(b)||/^[0-9]{1,7}$/.test(a)},"Please specify a valid giro account number."),a.validator.addMethod("greaterThan",function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.not(".validate-greaterThan-blur").length&&e.addClass("validate-greaterThan-blur").on("blur.validate-greaterThan",function(){a(c).valid()}),b>e.val()},"Please enter a greater value."),a.validator.addMethod("greaterThanEqual",function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.not(".validate-greaterThanEqual-blur").length&&e.addClass("validate-greaterThanEqual-blur").on("blur.validate-greaterThanEqual",function(){a(c).valid()}),b>=e.val()},"Please enter a greater value."),a.validator.addMethod("iban",function(a,b){if(this.optional(b))return!0;var c,d,e,f,g,h,i,j,k,l=a.replace(/ /g,"").toUpperCase(),m="",n=!0,o="",p="",q=5;if(l.lengthd)},a.validator.format("Please select no more than {0} files.")),a.validator.addMethod("maxsize",function(b,c,d){if(this.optional(c))return!0;if("file"===a(c).attr("type")&&c.files&&c.files.length)for(var e=0;ed)return!1;return!0},a.validator.format("File size must not exceed {0} bytes each.")),a.validator.addMethod("maxsizetotal",function(b,c,d){if(this.optional(c))return!0;if("file"===a(c).attr("type")&&c.files&&c.files.length)for(var e=0,f=0;fd)return!1;return!0},a.validator.format("Total size of all files must not exceed {0} bytes.")),a.validator.addMethod("mobileNL",function(a,b){return this.optional(b)||/^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)6((\s|\s?\-\s?)?[0-9]){8}$/.test(a)},"Please specify a valid mobile number."),a.validator.addMethod("mobileRU",function(a,b){var c=a.replace(/\(|\)|\s+|-/g,"");return this.optional(b)||c.length>9&&/^((\+7|7|8)+([0-9]){10})$/.test(c)},"Please specify a valid mobile number."),a.validator.addMethod("mobileUK",function(a,b){return a=a.replace(/\(|\)|\s+|-/g,""),this.optional(b)||a.length>9&&a.match(/^(?:(?:(?:00\s?|\+)44\s?|0)7(?:[1345789]\d{2}|624)\s?\d{3}\s?\d{3})$/)},"Please specify a valid mobile number."),a.validator.addMethod("netmask",function(a,b){return this.optional(b)||/^(254|252|248|240|224|192|128)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(254|252|248|240|224|192|128|0)/i.test(a)},"Please enter a valid netmask."),a.validator.addMethod("nieES",function(a,b){"use strict";if(this.optional(b))return!0;var c,d=new RegExp(/^[MXYZ]{1}[0-9]{7,8}[TRWAGMYFPDXBNJZSQVHLCKET]{1}$/gi),e="TRWAGMYFPDXBNJZSQVHLCKET",f=a.substr(a.length-1).toUpperCase();return a=a.toString().toUpperCase(),!(a.length>10||a.length<9||!d.test(a))&&(a=a.replace(/^[X]/,"0").replace(/^[Y]/,"1").replace(/^[Z]/,"2"),c=9===a.length?a.substr(0,8):a.substr(0,9),e.charAt(parseInt(c,10)%23)===f)},"Please specify a valid NIE number."),a.validator.addMethod("nifES",function(a,b){"use strict";return!!this.optional(b)||(a=a.toUpperCase(),!!a.match("((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)")&&(/^[0-9]{8}[A-Z]{1}$/.test(a)?"TRWAGMYFPDXBNJZSQVHLCKE".charAt(a.substring(8,0)%23)===a.charAt(8):!!/^[KLM]{1}/.test(a)&&a[8]==="TRWAGMYFPDXBNJZSQVHLCKE".charAt(a.substring(8,1)%23)))},"Please specify a valid NIF number."),a.validator.addMethod("nipPL",function(a){"use strict";if(a=a.replace(/[^0-9]/g,""),10!==a.length)return!1;for(var b=[6,5,7,2,3,4,5,6,7],c=0,d=0;d<9;d++)c+=b[d]*a[d];var e=c%11,f=10===e?0:e;return f===parseInt(a[9],10)},"Please specify a valid NIP number."),a.validator.addMethod("nisBR",function(a){var b,c,d,e,f,g=0;if(a=a.replace(/([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g,""),11!==a.length)return!1;for(c=parseInt(a.substring(10,11),10),b=parseInt(a.substring(0,10),10),e=2;e<12;e++)f=e,10===e&&(f=2),11===e&&(f=3),g+=b%10*f,b=parseInt(b/10,10);return d=g%11,d=d>1?11-d:0,c===d},"Please specify a valid NIS/PIS number."),a.validator.addMethod("notEqualTo",function(b,c,d){return this.optional(c)||!a.validator.methods.equalTo.call(this,b,c,d)},"Please enter a different value, values must not be the same."),a.validator.addMethod("nowhitespace",function(a,b){return this.optional(b)||/^\S+$/i.test(a)},"No white space please."),a.validator.addMethod("pattern",function(a,b,c){return!!this.optional(b)||("string"==typeof c&&(c=new RegExp("^(?:"+c+")$")),c.test(a))},"Invalid format."),a.validator.addMethod("phoneNL",function(a,b){return this.optional(b)||/^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)[1-9]((\s|\s?\-\s?)?[0-9]){8}$/.test(a)},"Please specify a valid phone number."),a.validator.addMethod("phonePL",function(a,b){a=a.replace(/\s+/g,"");var c=/^(?:(?:(?:\+|00)?48)|(?:\(\+?48\)))?(?:1[2-8]|2[2-69]|3[2-49]|4[1-68]|5[0-9]|6[0-35-9]|[7-8][1-9]|9[145])\d{7}$/;return this.optional(b)||c.test(a)},"Please specify a valid phone number."),a.validator.addMethod("phonesUK",function(a,b){return a=a.replace(/\(|\)|\s+|-/g,""),this.optional(b)||a.length>9&&a.match(/^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[1345789]\d{8}|624\d{6})))$/)},"Please specify a valid uk phone number."),a.validator.addMethod("phoneUK",function(a,b){return a=a.replace(/\(|\)|\s+|-/g,""),this.optional(b)||a.length>9&&a.match(/^(?:(?:(?:00\s?|\+)44\s?)|(?:\(?0))(?:\d{2}\)?\s?\d{4}\s?\d{4}|\d{3}\)?\s?\d{3}\s?\d{3,4}|\d{4}\)?\s?(?:\d{5}|\d{3}\s?\d{3})|\d{5}\)?\s?\d{4,5})$/)},"Please specify a valid phone number."),a.validator.addMethod("phoneUS",function(a,b){return a=a.replace(/\s+/g,""),this.optional(b)||a.length>9&&a.match(/^(\+?1-?)?(\([2-9]([02-9]\d|1[02-9])\)|[2-9]([02-9]\d|1[02-9]))-?[2-9]\d{2}-?\d{4}$/)},"Please specify a valid phone number."),a.validator.addMethod("postalcodeBR",function(a,b){return this.optional(b)||/^\d{2}.\d{3}-\d{3}?$|^\d{5}-?\d{3}?$/.test(a)},"Informe um CEP válido."),a.validator.addMethod("postalCodeCA",function(a,b){return this.optional(b)||/^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ] *\d[ABCEGHJKLMNPRSTVWXYZ]\d$/i.test(a)},"Please specify a valid postal code."),a.validator.addMethod("postalcodeIT",function(a,b){return this.optional(b)||/^\d{5}$/.test(a)},"Please specify a valid postal code."),a.validator.addMethod("postalcodeNL",function(a,b){return this.optional(b)||/^[1-9][0-9]{3}\s?[a-zA-Z]{2}$/.test(a)},"Please specify a valid postal code."),a.validator.addMethod("postcodeUK",function(a,b){return this.optional(b)||/^((([A-PR-UWYZ][0-9])|([A-PR-UWYZ][0-9][0-9])|([A-PR-UWYZ][A-HK-Y][0-9])|([A-PR-UWYZ][A-HK-Y][0-9][0-9])|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))\s?([0-9][ABD-HJLNP-UW-Z]{2})|(GIR)\s?(0AA))$/i.test(a)},"Please specify a valid UK postcode."),a.validator.addMethod("require_from_group",function(b,c,d){var e=a(d[1],c.form),f=e.eq(0),g=f.data("valid_req_grp")?f.data("valid_req_grp"):a.extend({},this),h=e.filter(function(){return g.elementValue(this)}).length>=d[0];return f.data("valid_req_grp",g),a(c).data("being_validated")||(e.data("being_validated",!0),e.each(function(){g.element(this)}),e.data("being_validated",!1)),h},a.validator.format("Please fill at least {0} of these fields.")),a.validator.addMethod("skip_or_fill_minimum",function(b,c,d){var e=a(d[1],c.form),f=e.eq(0),g=f.data("valid_skip")?f.data("valid_skip"):a.extend({},this),h=e.filter(function(){return g.elementValue(this)}).length,i=0===h||h>=d[0];return f.data("valid_skip",g),a(c).data("being_validated")||(e.data("being_validated",!0),e.each(function(){g.element(this)}),e.data("being_validated",!1)),i},a.validator.format("Please either skip these fields or fill at least {0} of them.")),a.validator.addMethod("stateUS",function(a,b,c){var d,e="undefined"==typeof c,f=!e&&"undefined"!=typeof c.caseSensitive&&c.caseSensitive,g=!e&&"undefined"!=typeof c.includeTerritories&&c.includeTerritories,h=!e&&"undefined"!=typeof c.includeMilitary&&c.includeMilitary;return d=g||h?g&&h?"^(A[AEKLPRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$":g?"^(A[KLRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$":"^(A[AEKLPRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$":"^(A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$",d=f?new RegExp(d):new RegExp(d,"i"),this.optional(b)||d.test(a)},"Please specify a valid state."),a.validator.addMethod("strippedminlength",function(b,c,d){return a(b).text().length>=d},a.validator.format("Please enter at least {0} characters.")),a.validator.addMethod("time",function(a,b){return this.optional(b)||/^([01]\d|2[0-3]|[0-9])(:[0-5]\d){1,2}$/.test(a)},"Please enter a valid time, between 00:00 and 23:59."),a.validator.addMethod("time12h",function(a,b){return this.optional(b)||/^((0?[1-9]|1[012])(:[0-5]\d){1,2}(\ ?[AP]M))$/i.test(a)},"Please enter a valid time in 12-hour am/pm format."),a.validator.addMethod("url2",function(a,b){return this.optional(b)||/^(?:(?:(?:https?|ftp):)?\/\/)(?:(?:[^\]\[?\/<~#`!@$^&*()+=}|:";',>{ ]|%[0-9A-Fa-f]{2})+(?::(?:[^\]\[?\/<~#`!@$^&*()+=}|:";',>{ ]|%[0-9A-Fa-f]{2})*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?)|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff])|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62}\.)))(?::\d{2,5})?(?:[/?#]\S*)?$/i.test(a)},a.validator.messages.url),a.validator.addMethod("vinUS",function(a){if(17!==a.length)return!1;var b,c,d,e,f,g,h=["A","B","C","D","E","F","G","H","J","K","L","M","N","P","R","S","T","U","V","W","X","Y","Z"],i=[1,2,3,4,5,6,7,8,1,2,3,4,5,7,9,2,3,4,5,6,7,8,9],j=[8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2],k=0;for(b=0;b<17;b++){if(e=j[b],d=a.slice(b,b+1),8===b&&(g=d),isNaN(d)){for(c=0;c