register
This commit is contained in:
@@ -19,6 +19,7 @@ using Microsoft.Extensions.Logging;
|
||||
using System.IO.Compression;
|
||||
using System.Linq;
|
||||
using _0_Framework.Domain.CustomizeCheckoutShared.Base;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
|
||||
namespace _0_Framework.Application;
|
||||
@@ -32,6 +33,15 @@ public static class Tools
|
||||
public static string[] DayNames = { "شنبه", "یکشنبه", "دو شنبه", "سه شنبه", "چهار شنبه", "پنج شنبه", "جمعه" };
|
||||
public static string[] DayNamesG = { "یکشنبه", "دو شنبه", "سه شنبه", "چهار شنبه", "پنج شنبه", "جمعه", "شنبه" };
|
||||
|
||||
|
||||
public static bool IsMobileValid(this string mobileNo)
|
||||
{
|
||||
if (mobileNo.Length < 11)
|
||||
return false;
|
||||
return Regex.IsMatch(mobileNo, "^((09))(\\d{9})$");
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// دریافت روزهای کارکرد پرسنل در لیست بیمه ماه مشخص شده
|
||||
/// با کمک شروع بکار و ترک کار
|
||||
@@ -778,8 +788,8 @@ public static class Tools
|
||||
{
|
||||
case "0000000000":
|
||||
case "1111111111":
|
||||
case "22222222222":
|
||||
case "33333333333":
|
||||
case "2222222222":
|
||||
case "3333333333":
|
||||
case "4444444444":
|
||||
case "5555555555":
|
||||
case "6666666666":
|
||||
|
||||
@@ -32,16 +32,24 @@ public class UidService : IUidService
|
||||
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<PersonalInfoResponse>();
|
||||
responseResult.BasicInformation.FirstName = responseResult.BasicInformation.FirstName.ToPersian();
|
||||
responseResult.BasicInformation.LastName = responseResult.BasicInformation.LastName.ToPersian();
|
||||
responseResult.BasicInformation.FatherName = responseResult.BasicInformation.FatherName.ToPersian();
|
||||
try
|
||||
{
|
||||
var requestResult = await _httpClient.PostAsync("person/v2", contentType);
|
||||
if (!requestResult.IsSuccessStatusCode)
|
||||
return null;
|
||||
var responseResult = await requestResult.Content.ReadFromJsonAsync<PersonalInfoResponse>();
|
||||
responseResult.BasicInformation.FirstName = responseResult.BasicInformation.FirstName.ToPersian();
|
||||
responseResult.BasicInformation.LastName = responseResult.BasicInformation.LastName.ToPersian();
|
||||
responseResult.BasicInformation.FatherName = responseResult.BasicInformation.FatherName.ToPersian();
|
||||
|
||||
|
||||
return responseResult;
|
||||
return responseResult;
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -55,12 +63,19 @@ public class UidService : IUidService
|
||||
};
|
||||
var json = JsonConvert.SerializeObject(request);
|
||||
var contentType = new StringContent(json, Encoding.UTF8, "application/json");
|
||||
try
|
||||
{
|
||||
var requestResult = await _httpClient.PostAsync("mobile/owner/v2", contentType);
|
||||
if (!requestResult.IsSuccessStatusCode)
|
||||
return null;
|
||||
|
||||
var requestResult = await _httpClient.PostAsync("mobile/owner/v2", contentType);
|
||||
if (!requestResult.IsSuccessStatusCode)
|
||||
var responseResult = await requestResult.Content.ReadFromJsonAsync<MatchMobileWithNationalCodeResponse>();
|
||||
return responseResult;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
var responseResult = await requestResult.Content.ReadFromJsonAsync<MatchMobileWithNationalCodeResponse>();
|
||||
return responseResult;
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,6 @@
|
||||
using _0_Framework.Domain;
|
||||
using System.Threading.Tasks;
|
||||
using _0_Framework.Domain;
|
||||
using CompanyManagment.App.Contracts.TemporaryClientRegistration;
|
||||
|
||||
namespace Company.Domain.TemporaryClientRegistrationAgg;
|
||||
|
||||
@@ -10,5 +12,12 @@ public interface IContractingPartyTempRepository :IRepository<long, ContractingP
|
||||
/// </summary>
|
||||
/// <param name="nationalCode"></param>
|
||||
/// <returns></returns>
|
||||
bool CheckExistOrAuthenticated(string nationalCode, string dateOfBirth);
|
||||
Task<bool> CheckExistOrAuthenticated(string nationalCode, string dateOfBirth);
|
||||
|
||||
/// <summary>
|
||||
/// دریافت اطلاعات طرف حساب موقت با کد ملی
|
||||
/// </summary>
|
||||
/// <param name="nationalCode"></param>
|
||||
/// <returns></returns>
|
||||
ContractingPartyTempViewModel GetByNationalCode(string nationalCode);
|
||||
}
|
||||
@@ -3,4 +3,9 @@
|
||||
public class ContractingPartyTempViewModel : CreateContractingPartyTemp
|
||||
{
|
||||
public long Id { get; set; }
|
||||
/// <summary>
|
||||
/// تاریخ تولد شمسی
|
||||
/// </summary>
|
||||
public string DateOfBirthFa { get; set; }
|
||||
|
||||
}
|
||||
@@ -1,8 +1,9 @@
|
||||
using _0_Framework.Application;
|
||||
using System.Threading.Tasks;
|
||||
using _0_Framework.Application;
|
||||
|
||||
namespace CompanyManagment.App.Contracts.TemporaryClientRegistration;
|
||||
|
||||
public interface ITemporaryClientRegistrationApplication
|
||||
{
|
||||
OperationResult CreateContractingPartyTemp(string nationalCode, string dateOfBirth);
|
||||
Task<OperationResult<ContractingPartyTempViewModel>> CreateContractingPartyTemp(string nationalCode, string dateOfBirth, string mobile);
|
||||
}
|
||||
@@ -1,7 +1,10 @@
|
||||
using _0_Framework.Application;
|
||||
using System.Threading.Tasks;
|
||||
using _0_Framework.Application;
|
||||
using _0_Framework.Application.UID;
|
||||
using Company.Domain.ContarctingPartyAgg;
|
||||
using Company.Domain.TemporaryClientRegistrationAgg;
|
||||
using CompanyManagment.App.Contracts.TemporaryClientRegistration;
|
||||
using PersianTools.Core;
|
||||
|
||||
namespace CompanyManagment.Application;
|
||||
|
||||
@@ -9,17 +12,38 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
|
||||
{
|
||||
private readonly IContractingPartyTempRepository _contractingPartyTempRepository;
|
||||
private readonly IPersonalContractingPartyRepository _personalContractingPartyRepository;
|
||||
private readonly IUidService _uidService;
|
||||
|
||||
public TemporaryClientRegistrationApplication(IContractingPartyTempRepository contractingPartyTempRepository, IPersonalContractingPartyRepository personalContractingPartyRepository)
|
||||
public TemporaryClientRegistrationApplication(IContractingPartyTempRepository contractingPartyTempRepository, IPersonalContractingPartyRepository personalContractingPartyRepository, IUidService uidService)
|
||||
{
|
||||
_contractingPartyTempRepository = contractingPartyTempRepository;
|
||||
_personalContractingPartyRepository = personalContractingPartyRepository;
|
||||
_uidService = uidService;
|
||||
}
|
||||
|
||||
public OperationResult CreateContractingPartyTemp(string nationalCode , string dateOfBirth)
|
||||
public async Task<OperationResult<ContractingPartyTempViewModel>> CreateContractingPartyTemp(string nationalCode , string dateOfBirth, string mobile)
|
||||
{
|
||||
var op = new OperationResult();
|
||||
var getExistContractingParty = _contractingPartyTempRepository.CheckExistOrAuthenticated(nationalCode, dateOfBirth);
|
||||
var op = new OperationResult<ContractingPartyTempViewModel>();
|
||||
|
||||
#region Validations
|
||||
|
||||
if (string.IsNullOrWhiteSpace(nationalCode) || string.IsNullOrWhiteSpace(dateOfBirth) ||
|
||||
string.IsNullOrWhiteSpace(mobile))
|
||||
return op.Failed("هیچ یک از فیلد ها نمیتواند خالی باشد");
|
||||
|
||||
|
||||
if (nationalCode.NationalCodeValid() != "valid")
|
||||
return op.Failed("کد ملی نا معتبر است");
|
||||
|
||||
if(!dateOfBirth.IsPersianDateValid())
|
||||
return op.Failed("تاریخ تولد نا معتبر است");
|
||||
|
||||
if(!mobile.IsMobileValid())
|
||||
return op.Failed("شماره همراه نا معتبر است");
|
||||
#endregion
|
||||
|
||||
|
||||
var getExistContractingParty = await _contractingPartyTempRepository.CheckExistOrAuthenticated(nationalCode, dateOfBirth);
|
||||
|
||||
//اگر طرف حساب قبلا در دیتابیس وجود داشت
|
||||
if (getExistContractingParty)
|
||||
@@ -29,8 +53,59 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
|
||||
//اگر طرف حساب وجود نداشت
|
||||
else
|
||||
{
|
||||
//دریافت اطلاعات طرف حساب موقت که قبلا ایجاد شده
|
||||
var getExistTemp = _contractingPartyTempRepository.GetByNationalCode(nationalCode);
|
||||
|
||||
var dateOfBirthGr = dateOfBirth.ToGeorgianDateTime();
|
||||
|
||||
if (getExistTemp != null)
|
||||
{
|
||||
|
||||
if(getExistTemp.DateOfBirth != dateOfBirthGr)
|
||||
return op.Failed("تاریخ تولد مطابقت ندارد");
|
||||
if (getExistTemp.Phone != mobile)
|
||||
return op.Failed("شما قبلا با شماره همراه دیگری ثبت نام نموده اید");
|
||||
return op.Succcedded(getExistTemp);
|
||||
|
||||
}
|
||||
//چک کردن مطابقت شماره همراه و کد ملی
|
||||
var isMachMobilAndNationalCode = await _uidService.IsMachPhoneWithNationalCode(nationalCode, mobile);
|
||||
if (isMachMobilAndNationalCode == null)
|
||||
return op.Failed("خطا در سرویس احراز هویت");
|
||||
if(!isMachMobilAndNationalCode.IsMatched)
|
||||
return op.Failed("شماره همراه وارد شده با کد ملی مطابقت ندارد");
|
||||
|
||||
//دریافت اطلاعات احراز هویت
|
||||
var apiRespons = await _uidService.GetPersonalInfo(nationalCode, dateOfBirth);
|
||||
|
||||
if(apiRespons == null)
|
||||
return op.Failed("خطا در سرویس احراز هویت");
|
||||
if (apiRespons.ResponseContext.Status.Code != 0)
|
||||
return op.Failed($"{apiRespons.ResponseContext.Status.Message}");
|
||||
|
||||
var idNumber = apiRespons.IdentificationInformation.ShenasnamehNumber == "0"
|
||||
? apiRespons.IdentificationInformation.NationalId
|
||||
: apiRespons.IdentificationInformation.ShenasnamehNumber;
|
||||
|
||||
//ایجاد طرف حساب موقت
|
||||
var createTemp = new ContractingPartyTemp(apiRespons.BasicInformation.FirstName,
|
||||
apiRespons.BasicInformation.LastName, nationalCode, idNumber, mobile,
|
||||
apiRespons.BasicInformation.FatherName, "", "", "",
|
||||
apiRespons.IdentificationInformation.ShenasnameSeri,
|
||||
apiRespons.IdentificationInformation.ShenasnameSerial, apiRespons.BasicInformation.GenderEnum,
|
||||
dateOfBirthGr);
|
||||
await _contractingPartyTempRepository.CreateAsync(createTemp);
|
||||
await _contractingPartyTempRepository.SaveChangesAsync();
|
||||
|
||||
var result = new ContractingPartyTempViewModel();
|
||||
result.Id = createTemp.id;
|
||||
result.FName = createTemp.FName;
|
||||
result.LName = createTemp.LName;
|
||||
result.DateOfBirthFa = dateOfBirth;
|
||||
result.IdNumber = idNumber;
|
||||
|
||||
return op.Succcedded(result);
|
||||
}
|
||||
throw new System.NotImplementedException();
|
||||
|
||||
}
|
||||
}
|
||||
@@ -93,6 +93,7 @@ using Company.Domain.SubtitleAgg;
|
||||
using Company.Domain.TaxJobCategoryAgg;
|
||||
using Company.Domain.TaxLeftWorkCategoryAgg;
|
||||
using Company.Domain.TaxLeftWorkItemAgg;
|
||||
using Company.Domain.TemporaryClientRegistrationAgg;
|
||||
using Company.Domain.TextManagerAgg;
|
||||
using Company.Domain.WorkHistory;
|
||||
using Company.Domain.WorkingHoursAgg;
|
||||
@@ -185,10 +186,14 @@ public class CompanyContext : DbContext
|
||||
public DbSet<Bank> Banks { get; set; }
|
||||
public DbSet<EmployeeBankInformation> EmployeeBankInformationSet { get; set; }
|
||||
|
||||
#endregion
|
||||
#endregion
|
||||
|
||||
#region TemporaryClientRegisteration
|
||||
|
||||
public DbSet<CustomizeCheckout> CustomizeCheckouts { get; set; }
|
||||
public DbSet<ContractingPartyTemp> ContractingPartyTemps { get; set; }
|
||||
|
||||
#endregion
|
||||
public DbSet<CustomizeCheckout> CustomizeCheckouts { get; set; }
|
||||
public DbSet<CustomizeCheckoutTemp> CustomizeCheckoutTemps { get; set; }
|
||||
public DbSet<TaxLeftWorkItem> TaxLeftWorkItems { get; set; }
|
||||
public DbSet<TaxLeftWorkCategory> TaxLeftWorkCategories { get; set; }
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using _0_Framework.Application;
|
||||
using _0_Framework.Application.UID;
|
||||
using _0_Framework.InfraStructure;
|
||||
using AccountMangement.Infrastructure.EFCore.Migrations;
|
||||
using Company.Domain.TemporaryClientRegistrationAgg;
|
||||
using CompanyManagment.App.Contracts.PersonalContractingParty;
|
||||
using CompanyManagment.App.Contracts.TemporaryClientRegistration;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace CompanyManagment.EFCore.Repository;
|
||||
@@ -12,14 +14,14 @@ namespace CompanyManagment.EFCore.Repository;
|
||||
public class ContractingPartyTempRepository : RepositoryBase<long, ContractingPartyTemp>, IContractingPartyTempRepository
|
||||
{
|
||||
private readonly CompanyContext _context;
|
||||
private readonly UidService _uidService;
|
||||
public ContractingPartyTempRepository(CompanyContext context, UidService uidService) : base(context)
|
||||
private readonly IUidService _uidService;
|
||||
public ContractingPartyTempRepository(CompanyContext context, IUidService uidService) : base(context)
|
||||
{
|
||||
_context = context;
|
||||
_uidService = uidService;
|
||||
}
|
||||
|
||||
public bool CheckExistOrAuthenticated(string nationalCode, string dateOfBirth)
|
||||
public async Task<bool> CheckExistOrAuthenticated(string nationalCode, string dateOfBirth)
|
||||
{
|
||||
var contractingParty = _context.PersonalContractingParties.FirstOrDefault(x=>x.Nationalcode == nationalCode && x.IsLegal == "false");
|
||||
if (contractingParty == null)
|
||||
@@ -29,7 +31,7 @@ public class ContractingPartyTempRepository : RepositoryBase<long, ContractingPa
|
||||
{
|
||||
|
||||
var dateOfbirth = contractingParty.DateOfBirth.ToFarsi();
|
||||
var apiRespons = _uidService.GetPersonalInfo(contractingParty.Nationalcode, dateOfbirth).Result;
|
||||
var apiRespons = await _uidService.GetPersonalInfo(contractingParty.Nationalcode, dateOfbirth);
|
||||
if (apiRespons != null && apiRespons.ResponseContext.Status.Code == 0)
|
||||
{
|
||||
var idNumber = apiRespons.IdentificationInformation.ShenasnamehNumber == "0"
|
||||
@@ -43,4 +45,28 @@ public class ContractingPartyTempRepository : RepositoryBase<long, ContractingPa
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public ContractingPartyTempViewModel GetByNationalCode(string nationalCode)
|
||||
{
|
||||
return _context.ContractingPartyTemps.Select(x => new ContractingPartyTempViewModel
|
||||
{
|
||||
Id = x.id,
|
||||
DateOfBirth = x.DateOfBirth,
|
||||
IdNumberSeri = x.IdNumberSeri,
|
||||
IdNumberSerial = x.IdNumberSerial,
|
||||
Address = x.Address,
|
||||
City = x.City,
|
||||
FatherName = x.FatherName,
|
||||
FName = x.FName,
|
||||
LName = x.LName,
|
||||
Gender = x.Gender,
|
||||
NationalCode = x.NationalCode,
|
||||
IdNumber = x.IdNumber,
|
||||
Phone = x.Phone,
|
||||
State = x.State,
|
||||
|
||||
|
||||
}).FirstOrDefault(x => x.NationalCode == nationalCode);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -199,8 +199,10 @@ using CompanyManagment.App.Contracts.EmployeeDocuments;
|
||||
using CompanyManagment.App.Contracts.EmployeeDocumentsAdminSelection;
|
||||
using Company.Domain.EmployeeClientTempAgg;
|
||||
using Company.Domain.LeftWorkTempAgg;
|
||||
using Company.Domain.TemporaryClientRegistrationAgg;
|
||||
using CompanyManagment.App.Contracts.EmployeeClientTemp;
|
||||
using CompanyManagment.App.Contracts.LeftWorkTemp;
|
||||
using CompanyManagment.App.Contracts.TemporaryClientRegistration;
|
||||
|
||||
namespace PersonalContractingParty.Config;
|
||||
|
||||
@@ -441,9 +443,15 @@ public class PersonalBootstrapper
|
||||
|
||||
services.AddTransient<IEmployeeBankInformationRepository, EmployeeBankInformationRepository>();
|
||||
services.AddTransient<IEmployeeBankInformationApplication, EmployeeBankInformationApplication>();
|
||||
#endregion
|
||||
#endregion
|
||||
|
||||
services.AddTransient<IRollCallDomainService, RollCallDomainService>();
|
||||
#region TemporaryClientRegisteration
|
||||
|
||||
services.AddTransient<ITemporaryClientRegistrationApplication, TemporaryClientRegistrationApplication>();
|
||||
services.AddTransient<IContractingPartyTempRepository, ContractingPartyTempRepository>();
|
||||
|
||||
#endregion
|
||||
services.AddTransient<IRollCallDomainService, RollCallDomainService>();
|
||||
//=========End Of Main====================================
|
||||
|
||||
//---File Project------------------------------------
|
||||
|
||||
@@ -15,6 +15,7 @@ using Company.Domain.ReportAgg;
|
||||
using Company.Domain.RollCallAgg;
|
||||
using Company.Domain.RollCallAgg.DomainService;
|
||||
using CompanyManagment.App.Contracts.AndroidApkVersion;
|
||||
using CompanyManagment.App.Contracts.TemporaryClientRegistration;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using IUidService = _0_Framework.Application.UID.IUidService;
|
||||
|
||||
@@ -46,13 +47,14 @@ namespace ServiceHost.Pages
|
||||
private readonly ICameraAccountApplication _cameraAccountApplication;
|
||||
private readonly IWebHostEnvironment _webHostEnvironment;
|
||||
private readonly IAndroidApkVersionApplication _androidApkVersionApplication;
|
||||
private readonly IUidService _uidService;
|
||||
private readonly IReportRepository _reportRepository;
|
||||
private readonly ITemporaryClientRegistrationApplication _clientRegistrationApplication;
|
||||
|
||||
|
||||
|
||||
|
||||
public IndexModel(ILogger<IndexModel> logger, IAccountApplication accountApplication, IGoogleRecaptcha googleRecaptcha, ISmsService smsService, IWorker worker,
|
||||
IAuthHelper authHelper, ICameraAccountApplication cameraAccountApplication, IWebHostEnvironment webHostEnvironment,
|
||||
IAndroidApkVersionApplication androidApkVersionApplication, IUidService uidService, IReportRepository reportRepository)
|
||||
IAndroidApkVersionApplication androidApkVersionApplication, ITemporaryClientRegistrationApplication clientRegistrationApplication)
|
||||
{
|
||||
_logger = logger;
|
||||
_accountApplication = accountApplication;
|
||||
@@ -63,12 +65,27 @@ namespace ServiceHost.Pages
|
||||
_cameraAccountApplication = cameraAccountApplication;
|
||||
_webHostEnvironment = webHostEnvironment;
|
||||
_androidApkVersionApplication = androidApkVersionApplication;
|
||||
_uidService = uidService;
|
||||
_reportRepository = reportRepository;
|
||||
_clientRegistrationApplication = clientRegistrationApplication;
|
||||
}
|
||||
|
||||
public IActionResult OnGet()
|
||||
{
|
||||
bool ex = false;
|
||||
while (!ex)
|
||||
{
|
||||
Console.WriteLine("enter National code ... ");
|
||||
var nationalCode = Console.ReadLine();
|
||||
Console.WriteLine("enter DateOfBirth ... ");
|
||||
var dateOfBirth = Console.ReadLine();
|
||||
Console.WriteLine("enter phoneNumber ... ");
|
||||
var phone = Console.ReadLine();
|
||||
var res =_clientRegistrationApplication.CreateContractingPartyTemp(nationalCode, dateOfBirth, phone).GetAwaiter().GetResult();
|
||||
Console.WriteLine("do you want to exit ... ");
|
||||
var exitCheck = Console.ReadLine();
|
||||
if (exitCheck == "yes")
|
||||
ex = true;
|
||||
}
|
||||
|
||||
|
||||
// _reportRepository.GetAllActiveWorkshopsNew("1403", "12");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user