diff --git a/0_Framework/Application/Gender.cs b/0_Framework/Application/Gender.cs new file mode 100644 index 00000000..bbc81090 --- /dev/null +++ b/0_Framework/Application/Gender.cs @@ -0,0 +1,7 @@ +namespace _0_Framework.Application; + +public enum Gender +{ + Male, + Female +} \ No newline at end of file diff --git a/0_Framework/Application/UID/IUidService.cs b/0_Framework/Application/UID/IUidService.cs new file mode 100644 index 00000000..19dd0034 --- /dev/null +++ b/0_Framework/Application/UID/IUidService.cs @@ -0,0 +1,121 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security.Permissions; +using System.Text; +using System.Threading.Tasks; +using Newtonsoft.Json; + +namespace _0_Framework.Application.UID; + +#region PersonalInfoResponseDTO + +/// +/// ویو مدل اطلاعات شخصی کاربر که از سرویس یو آیدی دریافت می شود +/// +/// +/// +/// +/// +public record PersonalInfoResponse( + UidBasicInformation BasicInformation, + IdentificationInformation IdentificationInformation, + RegistrationStatus RegistrationStatus, + ResponseContext ResponseContext); + + + +public class UidBasicInformation +{ + public string FirstName { get; set; } + public string LastName { get; set; } + public string FatherName { get; set; } + + [JsonProperty("gender")] + public string Gender { get; set; } + + public Gender GenderEnum => Gender switch + { + "GENDER_MALE" => Application.Gender.Male, + "GENDER_FEMALE" => Application.Gender.Female, + _ => throw new ArgumentOutOfRangeException() + }; +} +public record IdentificationInformation(string NationalId, string BirthDate, string ShenasnameSeri, string ShenasnameSerial, string ShenasnamehNumber); + +public class RegistrationStatus +{ + [JsonProperty("deathStatus")] + public string DeathStatus { get; set; } + + public DeathStatus DeathStatusEnum => DeathStatus switch + { + "DEATH_STATUS_ALIVE" => UID.DeathStatus.Alive, + "DEATH_STATUS_DEATH" => UID.DeathStatus.Dead, + _ => throw new ArgumentOutOfRangeException() + }; +}; +public record ResponseContext(UidStatus Status); + +public record UidStatus(int Code, string Message); + +public enum DeathStatus +{ + Alive, + Dead, +} + + + +#endregion + + +#region PersonalInfoRequestDTO +/// +/// درخواست اطلاعات شخصی کاربر از سرویس یو آیدی +/// +public class PersonalInfoRequest +{ + [JsonProperty("requestContext")] + public UidRequestContext RequestContext { get; set; } + + [JsonProperty("nationalId")] + public string NationalId { get; set; } + + [JsonProperty("birthDate")] + public string BirthDate { get; set; } + + [JsonProperty("mobileNumber")] + public string MobileNumber { get; set; } +} + +public class UidRequestContext +{ + [JsonProperty("apiInfo")] + public ApiInfo ApiInfo => new ApiInfo(); + +}; + +public record ApiInfo +{ + [JsonProperty("businessToken")] + public string BusinessToken => "5e03dd4e-999d-466f-92d8-7c0b1f66a8e9"; + + [JsonProperty("businessId")] + public string BusinessId => "98ed67ca-d441-4978-a748-e8bebce010eb"; +} +#endregion + +public interface IUidService +{ + Task GetPersonalInfo(string nationalCode , string birthDate); + Task IsMachPhoneWithNationalCode(string nationalCode , string phoneNumber); +} + +public class MatchMobileWithNationalCodeResponse +{ + [JsonProperty("isMatched")] public bool IsMatched { get; set; } + + public ResponseContext ResponseContext { get; set; } +} + diff --git a/0_Framework/Application/UID/UidService.cs b/0_Framework/Application/UID/UidService.cs new file mode 100644 index 00000000..2a947aa7 --- /dev/null +++ b/0_Framework/Application/UID/UidService.cs @@ -0,0 +1,61 @@ +using System; +using System.Net.Http; +using System.Net.Http.Json; +using System.Text; +using System.Text.Json; +using System.Threading.Tasks; +using Newtonsoft.Json; + +namespace _0_Framework.Application.UID; + +public class UidService : IUidService +{ + private readonly HttpClient _httpClient; + private const string BaseUrl= "https://json-api.uid.ir/api/inquiry/"; + + public UidService() + { + _httpClient = new HttpClient() + { + BaseAddress = new Uri(BaseUrl) + }; + } + + public async Task GetPersonalInfo(string nationalCode, string birthDate) + { + var request = new PersonalInfoRequest + { + BirthDate = birthDate , + NationalId = nationalCode, + RequestContext = new UidRequestContext() + }; + var json = JsonConvert.SerializeObject(request); + var contentType = new StringContent(json, Encoding.UTF8, "application/json"); + + var requestResult = await _httpClient.PostAsync("person/v2", contentType); + if(!requestResult.IsSuccessStatusCode) + return null; + var responseResult = await requestResult.Content.ReadFromJsonAsync(); + return responseResult; + } + + + public async Task IsMachPhoneWithNationalCode(string nationalCode, string phoneNumber) + { + var request = new PersonalInfoRequest + { + MobileNumber = phoneNumber, + NationalId = nationalCode, + RequestContext = new UidRequestContext() + }; + var json = JsonConvert.SerializeObject(request); + var contentType = new StringContent(json, Encoding.UTF8, "application/json"); + + var requestResult = await _httpClient.PostAsync("mobile/owner/v2", contentType); + if (!requestResult.IsSuccessStatusCode) + return null; + + var responseResult = await requestResult.Content.ReadFromJsonAsync(); + return responseResult; + } +} \ No newline at end of file diff --git a/AccountManagement.Application/TaskApplication.cs b/AccountManagement.Application/TaskApplication.cs index cb54e320..bd527766 100644 --- a/AccountManagement.Application/TaskApplication.cs +++ b/AccountManagement.Application/TaskApplication.cs @@ -928,8 +928,8 @@ public class TaskApplication : ITaskApplication public OperationResult UploadMedia(IFormFile mediaFile, long senderId) { var operation = new OperationResult(); - if ((mediaFile.Length > 5000000)) - return operation.Failed("حجم فایل نمیتواند از 5 مگابایت بیشتر باشد"); + if ((mediaFile.Length > 50000000)) + return operation.Failed("حجم فایل نمیتواند از 50 مگابایت بیشتر باشد"); var path = Path.Combine($"{_taskRepository.GetWebEnvironmentPath()}", "Storage", "temp", $"{senderId}"); Directory.CreateDirectory(path); diff --git a/AccountManagement.Application/TicketApplication.cs b/AccountManagement.Application/TicketApplication.cs index 71333f0a..1ad2ad1b 100644 --- a/AccountManagement.Application/TicketApplication.cs +++ b/AccountManagement.Application/TicketApplication.cs @@ -446,8 +446,8 @@ public class TicketApplication : ITicketApplication public OperationResult UploadMedia(IFormFile mediaFile, long senderId) { var operation = new OperationResult(); - if ((mediaFile.Length > 5000000) || (mediaFile.Length > 5000000) || (mediaFile.Length > 5000000)) - return operation.Failed("حجم فایل نمیتواند از 5 مگابایت بیشتر باشد"); + if ((mediaFile.Length > 50000000) || (mediaFile.Length > 50000000) || (mediaFile.Length > 50000000)) + return operation.Failed("حجم فایل نمیتواند از 50 مگابایت بیشتر باشد"); var path = Path.Combine($"{_taskRepository.GetWebEnvironmentPath()}", "Storage", "temp", $"{senderId}"); Directory.CreateDirectory(path); diff --git a/CompanyManagment.EFCore/Repository/LeaveRepository.cs b/CompanyManagment.EFCore/Repository/LeaveRepository.cs index 62bcb776..2a26e149 100644 --- a/CompanyManagment.EFCore/Repository/LeaveRepository.cs +++ b/CompanyManagment.EFCore/Repository/LeaveRepository.cs @@ -436,7 +436,7 @@ public class LeaveRepository : RepositoryBase, ILeaveRepository var leftCheck = _context.LeftWorkList .Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId) - .Where(x => x.StartWorkDate <= startLeav && x.LeftWorkDate > startLeav && x.StartWorkDate < endLeav && + .Where(x => x.StartWorkDate <= startLeav && x.LeftWorkDate > startLeav && x.StartWorkDate <= endLeav && x.LeftWorkDate > endLeav).ToList(); diff --git a/ServiceHost/Areas/Admin/Pages/Company/InsuranceList/EmployeeDatatable.cshtml b/ServiceHost/Areas/Admin/Pages/Company/InsuranceList/EmployeeDatatable.cshtml index c1b8cd1f..d8783edf 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/InsuranceList/EmployeeDatatable.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Company/InsuranceList/EmployeeDatatable.cshtml @@ -434,6 +434,7 @@ $('#hiddenBaseYearToEditModal').val(row.find('td:eq(10)').attr("data-BaseYears")); $('#hiddendaailyWagePlusBaseYear').val(row.find('td:eq(11)').attr("data-DailyWagePlusBaseYears")); $('#hiddenMonthlySalaryPlusBaseYear').val(row.find('td:eq(8)').attr("data-MonthlySalaryPlusBaseyear")); + $('#hiddenMarriedAllowance').val(row.find('td:eq(9)').attr("data-MarriedAllowance")); } diff --git a/ServiceHost/Areas/Admin/Pages/Company/InsuranceList/EmployeeListForEdit.cshtml b/ServiceHost/Areas/Admin/Pages/Company/InsuranceList/EmployeeListForEdit.cshtml index 7413d2e0..4016a27e 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/InsuranceList/EmployeeListForEdit.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Company/InsuranceList/EmployeeListForEdit.cshtml @@ -393,6 +393,7 @@ $('#hiddenBaseYearToEditModal').val(row.find('td:eq(10)').attr("data-BaseYears")); $('#hiddendaailyWagePlusBaseYear').val(row.find('td:eq(11)').attr("data-DailyWagePlusBaseYears")); $('#hiddenMonthlySalaryPlusBaseYear').val(row.find('td:eq(8)').attr("data-MonthlySalaryPlusBaseyear")); + $('#hiddenMarriedAllowance').val(row.find('td:eq(9)').attr("data-MarriedAllowance")); } diff --git a/ServiceHost/InsuranceList/477/1403_10/DSKKAR00.dbf b/ServiceHost/InsuranceList/477/1403_10/DSKKAR00.dbf new file mode 100644 index 00000000..9dfc116c Binary files /dev/null and b/ServiceHost/InsuranceList/477/1403_10/DSKKAR00.dbf differ diff --git a/ServiceHost/InsuranceList/477/1403_10/DSKWOR00.dbf b/ServiceHost/InsuranceList/477/1403_10/DSKWOR00.dbf new file mode 100644 index 00000000..fe03f27f Binary files /dev/null and b/ServiceHost/InsuranceList/477/1403_10/DSKWOR00.dbf differ diff --git a/ServiceHost/Pages/Index.cshtml.cs b/ServiceHost/Pages/Index.cshtml.cs index 40b38c7b..bd795f1e 100644 --- a/ServiceHost/Pages/Index.cshtml.cs +++ b/ServiceHost/Pages/Index.cshtml.cs @@ -7,6 +7,7 @@ using AccountManagement.Domain.AccountAgg; using Microsoft.AspNetCore.Http; using Newtonsoft.Json; using System.Security.Claims; +using _0_Framework.Application.UID; using AccountManagement.Application.Contracts.CameraAccount; using CompanyManagment.EFCore; using Company.Domain.EmployeeAgg; @@ -43,11 +44,12 @@ namespace ServiceHost.Pages private readonly ICameraAccountApplication _cameraAccountApplication; private readonly IWebHostEnvironment _webHostEnvironment; private readonly IAndroidApkVersionApplication _androidApkVersionApplication; + private readonly IUidService _uidService; public IndexModel(ILogger logger, IAccountApplication accountApplication, IGoogleRecaptcha googleRecaptcha, ISmsService smsService, IWorker worker, IAuthHelper authHelper, ICameraAccountApplication cameraAccountApplication, IWebHostEnvironment webHostEnvironment, - IAndroidApkVersionApplication androidApkVersionApplication) + IAndroidApkVersionApplication androidApkVersionApplication, IUidService uidService) { _logger = logger; _accountApplication = accountApplication; @@ -58,11 +60,15 @@ namespace ServiceHost.Pages _cameraAccountApplication = cameraAccountApplication; _webHostEnvironment = webHostEnvironment; _androidApkVersionApplication = androidApkVersionApplication; - } + _uidService = uidService; + } public IActionResult OnGet() - { + { + + //_uidService.GetPersonalInfo("2669318622","1363/02/25").GetAwaiter().GetResult(); + //_uidService.IsMachPhoneWithNationalCode("2669318622","09114221321").GetAwaiter().GetResult(); HasApkToDownload = _androidApkVersionApplication.HasAndroidApkToDownload(); if (User.Identity is { IsAuthenticated: true }) diff --git a/ServiceHost/Program.cs b/ServiceHost/Program.cs index fec35be5..10d8caf9 100644 --- a/ServiceHost/Program.cs +++ b/ServiceHost/Program.cs @@ -16,6 +16,7 @@ using Query.Bootstrapper; using ServiceHost.Hubs; using ServiceHost.MiddleWare; using WorkFlow.Infrastructure.Config; +using _0_Framework.Application.UID; var builder = WebApplication.CreateBuilder(args); builder.Services.AddRazorPages() @@ -38,6 +39,7 @@ builder.Services.AddTransient(); builder.Services.AddTransient(); builder.Services.AddTransient(); builder.Services.AddTransient(); +builder.Services.AddTransient(); //services.AddSingleton(); //services.AddHostedService(); diff --git a/ServiceHost/Storage/Task/12296/RollCallBgService_638754044052039151.zip b/ServiceHost/Storage/Task/12296/RollCallBgService_638754044052039151.zip new file mode 100644 index 00000000..d868647f Binary files /dev/null and b/ServiceHost/Storage/Task/12296/RollCallBgService_638754044052039151.zip differ diff --git a/ServiceHost/Storage/Ticket/47/screenshot_638754047520224604.png b/ServiceHost/Storage/Ticket/47/screenshot_638754047520224604.png new file mode 100644 index 00000000..bb053a8c Binary files /dev/null and b/ServiceHost/Storage/Ticket/47/screenshot_638754047520224604.png differ diff --git a/ServiceHost/Storage/Ticket/48/screenshot_638754047808657807.png b/ServiceHost/Storage/Ticket/48/screenshot_638754047808657807.png new file mode 100644 index 00000000..17c3f4a8 Binary files /dev/null and b/ServiceHost/Storage/Ticket/48/screenshot_638754047808657807.png differ diff --git a/ServiceHost/wwwroot/AssetsAdminNew/Tasks/js/Edit.js b/ServiceHost/wwwroot/AssetsAdminNew/Tasks/js/Edit.js index c543e1ac..bf31be12 100644 --- a/ServiceHost/wwwroot/AssetsAdminNew/Tasks/js/Edit.js +++ b/ServiceHost/wwwroot/AssetsAdminNew/Tasks/js/Edit.js @@ -546,8 +546,8 @@ function attachFileChangeHandler(fileInput, index) { $(fileInput).off('change').on('change', function () { let file = fileInput.files[0]; - if (file.size > 5000000) { - showAlertMessage('.alert-msg', 'لطفا فایل حجم کمتر از 5 مگابایت را انتخاب کنید.', 3500); + if (file.size > 50000000) { + showAlertMessage('.alert-msg', 'لطفا فایل حجم کمتر از 50 مگابایت را انتخاب کنید.', 3500); $(`#EditTask_Document${index}`).val(''); return; } diff --git a/ServiceHost/wwwroot/AssetsAdminNew/Tasks/js/create.js b/ServiceHost/wwwroot/AssetsAdminNew/Tasks/js/create.js index f71f4c51..a99624b2 100644 --- a/ServiceHost/wwwroot/AssetsAdminNew/Tasks/js/create.js +++ b/ServiceHost/wwwroot/AssetsAdminNew/Tasks/js/create.js @@ -626,8 +626,8 @@ function attachFileChangeHandler(fileInput, id, boxClass) { e.preventDefault(); var fileInputFile = fileInput.files[0]; - if (fileInputFile.size > 5000000) { - showAlertMessage('.alert-msg', 'لطفا فایل حجم کمتر از 5 مگابایت را انتخاب کنید.', 3500); + if (fileInputFile.size > 50000000) { + showAlertMessage('.alert-msg', 'لطفا فایل حجم کمتر از 50 مگابایت را انتخاب کنید.', 3500); $(`#Command_Document${id}`).val(''); return; }