using System; using System.Collections.Generic; using _0_Framework.Application; using Company.Domain.FileEmployerAgg; using CompanyManagment.App.Contracts.FileEmployer; using CompanyManagment.App.Contracts.Representative; namespace CompanyManagment.Application; public class FileEmployerApplication:IFileEmployerApplication { private readonly IFileEmployerRepository _fileEmployerRepository; private readonly IRepresentativeApplication _representativeApplication; public FileEmployerApplication(IFileEmployerRepository fileEmployerRepository, IRepresentativeApplication representativeApplication) { _fileEmployerRepository = fileEmployerRepository; _representativeApplication = representativeApplication; } public OperationResult CreateReal(CreateFileEmployer command) { var nationalCode = string.Empty; var opration = new OperationResult(); if (_fileEmployerRepository.Exists(x => x.LName == command.LName && x.FName == command.FName)) return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد"); if (command.RepresentativeId == 0) return opration.Failed("لطفا معرف را انتخاب کنبد"); if (string.IsNullOrWhiteSpace(command.FName) || string.IsNullOrWhiteSpace(command.LName)) return opration.Failed("وارد کردن نام و نام خانوادگی اجباری است"); if (!string.IsNullOrWhiteSpace(command.NationalCode)) { if (_fileEmployerRepository.Exists(x => x.NationalCode == command.NationalCode)) { return opration.Failed("کد ملی وارد شده تکراری است"); } try { char[] chArray = command.NationalCode.ToCharArray(); int[] numArray = new int[chArray.Length]; var cunt = chArray.Length; for (int i = 0; i < chArray.Length; i++) { numArray[i] = (int)char.GetNumericValue(chArray[i]); } int num2 = numArray[9]; switch (command.NationalCode) { case "0000000000": case "1111111111": case "22222222222": case "33333333333": case "4444444444": case "5555555555": case "6666666666": case "7777777777": case "8888888888": case "9999999999": return opration.Failed("کد ملی وارد شده صحیح نمی باشد"); } int num3 = ((((((((numArray[0] * 10) + (numArray[1] * 9)) + (numArray[2] * 8)) + (numArray[3] * 7)) + (numArray[4] * 6)) + (numArray[5] * 5)) + (numArray[6] * 4)) + (numArray[7] * 3)) + (numArray[8] * 2); int num4 = num3 - ((num3 / 11) * 11); if ((((num4 == 0) && (num2 == num4)) || ((num4 == 1) && (num2 == 1))) || ((num4 > 1) && (num2 == Math.Abs((int)(num4 - 11)))) && cunt <= 10) { nationalCode = command.NationalCode; } else { return opration.Failed("کد ملی وارد شده نا معتبر است"); } } catch (Exception) { return opration.Failed("لطفا کد ملی 10 رقمی وارد کنید"); } } else { nationalCode = ""; } string initial = "1300/10/11"; var dateOfBirth = command.DateOfBirth != null ? command.DateOfBirth.ToGeorgianDateTime() : initial.ToGeorgianDateTime(); var representative = _representativeApplication.GetDetails(command.RepresentativeId); var employerData = new FileEmployer(command.FName, command.LName, "*", command.RepresentativeId, representative.FullName, dateOfBirth, command.InsuranceWorkshopCode, nationalCode, command.LevelOfEducation, command.FieldOfStudy, command.IdNumber, command.Gender, command.MaritalStatus, "*", "*", "false", command.Phone, command.OfficePhone, command.MclsUserName, command.MclsPassword, command.EserviceUserName, command.EservicePassword, command.TaxOfficeUserName, command.TaxOfficepassword, command.SanaUserName, command.SanaPassword); _fileEmployerRepository.Create(employerData); _fileEmployerRepository.SaveChanges(); return opration.Succcedded(); } public OperationResult EditReal(EditFileEmployer command) { var nationalCode = string.Empty; var opration = new OperationResult(); var employer = _fileEmployerRepository.Get(command.Id); if (employer == null) return opration.Failed("رکورد مورد نظر یافت نشد"); if (_fileEmployerRepository.Exists(x => x.LName == command.LName && x.FName == command.FName && x.id != command.Id)) return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد"); if (command.RepresentativeId == 0) return opration.Failed("لطفا معرف را انتخاب کنبد"); if (string.IsNullOrWhiteSpace(command.FName) || string.IsNullOrWhiteSpace(command.LName)) return opration.Failed("وارد کردن نام و نام خانوادگی اجباری است"); if (!string.IsNullOrWhiteSpace(command.NationalCode)) { if (_fileEmployerRepository.Exists(x => x.NationalCode == command.NationalCode && x.id != command.Id)) { return opration.Failed("کد ملی وارد شده تکراری است"); } try { char[] chArray = command.NationalCode.ToCharArray(); int[] numArray = new int[chArray.Length]; var cunt = chArray.Length; for (int i = 0; i < chArray.Length; i++) { numArray[i] = (int)char.GetNumericValue(chArray[i]); } int num2 = numArray[9]; switch (command.NationalCode) { case "0000000000": case "1111111111": case "22222222222": case "33333333333": case "4444444444": case "5555555555": case "6666666666": case "7777777777": case "8888888888": case "9999999999": return opration.Failed("کد ملی وارد شده صحیح نمی باشد"); } int num3 = ((((((((numArray[0] * 10) + (numArray[1] * 9)) + (numArray[2] * 8)) + (numArray[3] * 7)) + (numArray[4] * 6)) + (numArray[5] * 5)) + (numArray[6] * 4)) + (numArray[7] * 3)) + (numArray[8] * 2); int num4 = num3 - ((num3 / 11) * 11); if ((((num4 == 0) && (num2 == num4)) || ((num4 == 1) && (num2 == 1))) || ((num4 > 1) && (num2 == Math.Abs((int)(num4 - 11)))) && cunt <= 10) { nationalCode = command.NationalCode; } else { return opration.Failed("کد ملی وارد شده نا معتبر است"); } } catch (Exception) { return opration.Failed("لطفا کد ملی 10 رقمی وارد کنید"); } } else { nationalCode = ""; } string initial = "1300/10/11"; var dateOfBirth = command.DateOfBirth != null ? command.DateOfBirth.ToGeorgianDateTime() : initial.ToGeorgianDateTime(); var representative = _representativeApplication.GetDetails(command.RepresentativeId); employer.EditReal(command.FName, command.LName, command.RepresentativeId, representative.FullName, dateOfBirth, command.InsuranceWorkshopCode, nationalCode, command.LevelOfEducation, command.FieldOfStudy, command.IdNumber, command.Gender, command.MaritalStatus, command.Phone, command.OfficePhone, command.MclsUserName, command.MclsPassword, command.EserviceUserName, command.EservicePassword, command.TaxOfficeUserName, command.TaxOfficepassword, command.SanaUserName, command.SanaPassword); _fileEmployerRepository.SaveChanges(); return opration.Succcedded(); } public OperationResult CreateLegal(CreateFileEmployer command) { var nationalCode = string.Empty; var opration = new OperationResult(); if (_fileEmployerRepository.Exists(x => x.LegalName == command.LegalName)) return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد"); if (command.RepresentativeId == 0) return opration.Failed("لطفا معرف را انتخاب کنبد"); if (string.IsNullOrWhiteSpace(command.LegalName)) return opration.Failed("لطفا نام موسسه یا شرکت حقوق را وارد کنید"); if (!string.IsNullOrWhiteSpace(command.NationalCode)) { if (_fileEmployerRepository.Exists(x => x.NationalCode == command.NationalCode)) { return opration.Failed("کد ملی وارد شده تکراری است"); } try { char[] chArray = command.NationalCode.ToCharArray(); int[] numArray = new int[chArray.Length]; var cunt = chArray.Length; for (int i = 0; i < chArray.Length; i++) { numArray[i] = (int)char.GetNumericValue(chArray[i]); } int num2 = numArray[9]; switch (command.NationalCode) { case "0000000000": case "1111111111": case "22222222222": case "33333333333": case "4444444444": case "5555555555": case "6666666666": case "7777777777": case "8888888888": case "9999999999": return opration.Failed("کد ملی وارد شده صحیح نمی باشد"); } int num3 = ((((((((numArray[0] * 10) + (numArray[1] * 9)) + (numArray[2] * 8)) + (numArray[3] * 7)) + (numArray[4] * 6)) + (numArray[5] * 5)) + (numArray[6] * 4)) + (numArray[7] * 3)) + (numArray[8] * 2); int num4 = num3 - ((num3 / 11) * 11); if ((((num4 == 0) && (num2 == num4)) || ((num4 == 1) && (num2 == 1))) || ((num4 > 1) && (num2 == Math.Abs((int)(num4 - 11)))) && cunt <= 10) { nationalCode = command.NationalCode; } else { return opration.Failed("کد ملی وارد شده نا معتبر است"); } } catch (Exception) { return opration.Failed("لطفا کد ملی 10 رقمی وارد کنید"); } } else { nationalCode = ""; } string initial = "1300/10/11"; var dateOfBirth = command.DateOfBirth != null ? command.DateOfBirth.ToGeorgianDateTime() : initial.ToGeorgianDateTime(); var representative = _representativeApplication.GetDetails(command.RepresentativeId); var employerData = new FileEmployer(command.FName, command.LName, command.LegalName, command.RepresentativeId, representative.FullName, dateOfBirth, command.InsuranceWorkshopCode, nationalCode, command.LevelOfEducation, command.FieldOfStudy, command.IdNumber, "*", "*", command.RegisterId, command.NationalId, "true", command.Phone, command.OfficePhone, command.MclsUserName, command.MclsPassword, command.EserviceUserName, command.EservicePassword, command.TaxOfficeUserName, command.TaxOfficepassword, command.SanaUserName, command.SanaPassword); _fileEmployerRepository.Create(employerData); _fileEmployerRepository.SaveChanges(); return opration.Succcedded(); } public OperationResult EditLegal(EditFileEmployer command) { var nationalCode = string.Empty; var opration = new OperationResult(); var employer = _fileEmployerRepository.Get(command.Id); if (employer == null) return opration.Failed("رکورد مورد نظر یافت نشد"); if (_fileEmployerRepository.Exists(x => x.LegalName == command.LegalName && x.id != command.Id)) return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد"); if (command.RepresentativeId == 0) return opration.Failed("لطفا معرف را انتخاب کنبد"); if (string.IsNullOrWhiteSpace(command.LegalName)) return opration.Failed("لطفا نام موسسه یا شرکت را وارد کنید"); if (!string.IsNullOrWhiteSpace(command.NationalCode)) { if (_fileEmployerRepository.Exists(x => x.NationalCode == command.NationalCode && x.id != command.Id)) { return opration.Failed("کد ملی وارد شده تکراری است"); } try { char[] chArray = command.NationalCode.ToCharArray(); int[] numArray = new int[chArray.Length]; var cunt = chArray.Length; for (int i = 0; i < chArray.Length; i++) { numArray[i] = (int)char.GetNumericValue(chArray[i]); } int num2 = numArray[9]; switch (command.NationalCode) { case "0000000000": case "1111111111": case "22222222222": case "33333333333": case "4444444444": case "5555555555": case "6666666666": case "7777777777": case "8888888888": case "9999999999": return opration.Failed("کد ملی وارد شده صحیح نمی باشد"); } int num3 = ((((((((numArray[0] * 10) + (numArray[1] * 9)) + (numArray[2] * 8)) + (numArray[3] * 7)) + (numArray[4] * 6)) + (numArray[5] * 5)) + (numArray[6] * 4)) + (numArray[7] * 3)) + (numArray[8] * 2); int num4 = num3 - ((num3 / 11) * 11); if ((((num4 == 0) && (num2 == num4)) || ((num4 == 1) && (num2 == 1))) || ((num4 > 1) && (num2 == Math.Abs((int)(num4 - 11)))) && cunt <= 10) { nationalCode = command.NationalCode; } else { return opration.Failed("کد ملی وارد شده نا معتبر است"); } } catch (Exception) { return opration.Failed("لطفا کد ملی 10 رقمی وارد کنید"); } } else { nationalCode = ""; } string initial = "1300/10/11"; var dateOfBirth = command.DateOfBirth != null ? command.DateOfBirth.ToGeorgianDateTime() : initial.ToGeorgianDateTime(); var representative = _representativeApplication.GetDetails(command.RepresentativeId); employer.EditLegal(command.FName, command.LName, command.LegalName,command.RepresentativeId, representative.FullName, dateOfBirth, command.InsuranceWorkshopCode, nationalCode, command.LevelOfEducation, command.FieldOfStudy, command.IdNumber, "*", "*",command.RegisterId,command.NationalId,"true", command.Phone, command.OfficePhone, command.MclsUserName, command.MclsPassword, command.EserviceUserName, command.EservicePassword, command.TaxOfficeUserName, command.TaxOfficepassword, command.SanaUserName, command.SanaPassword); _fileEmployerRepository.SaveChanges(); return opration.Succcedded(); } public List GetRepresentatives() { return _fileEmployerRepository.GetFileEmployee(); } public EditFileEmployer GetDetails(long id) { return _fileEmployerRepository.GetDetails(id); } public OperationResult Active(long id) { var opration = new OperationResult(); var employer = _fileEmployerRepository.Get(id); if (employer == null) return opration.Failed("رکورد مورد نظر یافت نشد"); employer.Active(); _fileEmployerRepository.SaveChanges(); return opration.Succcedded(); } public OperationResult DeActive(long id) { var opration = new OperationResult(); var employer = _fileEmployerRepository.Get(id); if (employer == null) return opration.Failed("رکورد مورد نظر یافت نشد"); employer.DeActive(); _fileEmployerRepository.SaveChanges(); return opration.Succcedded(); } public List Search(FileEmployerSearchModel searchModel) { return _fileEmployerRepository.Search(searchModel); } }