166 lines
9.8 KiB
C#
166 lines
9.8 KiB
C#
using System.Text.Json;
|
|
using Singer_Hexdive.Enums;
|
|
using Singer_Hexdive.Interfaces.RepositoryInterfaces;
|
|
using Singer_Hexdive.Interfaces.ServiceInterfaces;
|
|
using Singer_Hexdive.Models;
|
|
using Singer_Hexdive.Validations;
|
|
|
|
namespace Singer_Hexdive.Services
|
|
{
|
|
public class MerchantService : BaseMerchantService
|
|
{
|
|
private readonly IMerchantRepository _merchantRepository;
|
|
|
|
public MerchantService(IMerchantRepository merchantRepository)
|
|
{
|
|
_merchantRepository = merchantRepository;
|
|
}
|
|
|
|
//-------------------------------------------Merchant_Onboarding_Start----------------------------------//
|
|
public override async Task<object> GetM_PersonalDetails(object payload)
|
|
{
|
|
var data = DeserializePayload(payload);
|
|
int merchantId = FieldValidators.EnsureNotLessZero(data["MerchantId"].GetInt32(), "MerchantId");
|
|
var result = await _merchantRepository.GetM_PersonalDetailsAsync(merchantId);
|
|
return result;
|
|
}
|
|
public override async Task<object> PostM_PersonalDetails(object payload)
|
|
{
|
|
var data = DeserializePayload(payload);
|
|
int approveStatus = await _merchantRepository.CheckApprovedStatus(data["MechantId"].GetInt32(), "MerchantPersonalDetail");
|
|
if (approveStatus == 2)
|
|
{
|
|
var merchantPersonalDetail = new MerchantPersonalDetail
|
|
{
|
|
MerchantName = FieldValidators.EnsureNotNullOrEmpty(data["MerchantName"].GetString(), "MerchantName"),
|
|
FK_IdType = FieldValidators.EnsureNotLessZero(data["FK_IdType"].GetInt32(), "FK_IdType"),
|
|
M_IdNumber = FieldValidators.EnsureNotNullOrEmpty(data["M_IdNumber"].GetString(), "M_IdNumber"),
|
|
M_Email = FieldValidators.EnsureValidEmail(data["M_Email"].GetString(), "M_Email"),
|
|
M_Mobile_Primary = FieldValidators.IsValidPhoneNumber(data["M_Mobile_Primary"].GetString(), "M_Mobile_Primary"),
|
|
M_Mobile_Secondary = FieldValidators.IsValidPhoneNumber(data["M_Mobile_Secondary"].GetString(), "M_Mobile_Secondary"),
|
|
M_Address = FieldValidators.EnsureNotNullOrEmpty(data["M_Address"].GetString(), "M_Address"),
|
|
M_City = FieldValidators.EnsureNotNullOrEmpty(data["M_City"].GetString(), "M_City"),
|
|
M_PostalCode = FieldValidators.EnsureNotLessZero(data["M_PostalCode"].GetInt32(), "M_PostalCode"),
|
|
OnboardDate = data["OnboardDate"].GetDateTime(),
|
|
};
|
|
var result = await _merchantRepository.PostM_PersonalDetailsAsync(merchantPersonalDetail);
|
|
return result;
|
|
}
|
|
else
|
|
{
|
|
throw new InvalidOperationException("Merchant is not approved for onboarding.");
|
|
}
|
|
}
|
|
|
|
public override async Task<object> GetM_BusinessDetails(object payload)
|
|
{
|
|
var data = DeserializePayload(payload);
|
|
int merchantId = FieldValidators.EnsureNotLessZero(data["MerchantId"].GetInt32(), "MerchantId");
|
|
var result = await _merchantRepository.GetM_PersonalDetailsAsync(merchantId);
|
|
return result;
|
|
}
|
|
|
|
public override async Task<object> PostM_BusinessDetails(object payload)
|
|
{
|
|
var data = DeserializePayload(payload);
|
|
int approveStatus = await _merchantRepository.CheckApprovedStatus(data["MechantId"].GetInt32(), "MerchantBusinessDetail");
|
|
if (approveStatus == 2)
|
|
{
|
|
var merchantBusinessDetail = new MerchantBusinessDetail
|
|
{
|
|
FK_MechantId = FieldValidators.EnsureNotLessZero(data["MechantId"].GetInt32(), "MechantId"),
|
|
BusinessName = FieldValidators.EnsureNotNullOrEmpty(data["BusinessName"].GetString(), "BusinessName"),
|
|
BusinessDoingName = FieldValidators.EnsureNotNullOrEmpty(data["BusinessDoingName"].GetString(), "BusinessDoingName"),
|
|
BusinessRegNum = FieldValidators.EnsureNotNullOrEmpty(data["BusinessRegNum"].GetString(), "BusinessRegNum"),
|
|
BusinessIncomeTaxNum = FieldValidators.EnsureNotNullOrEmpty(data["BusinessIncomeTaxNum"].GetString(), "BusinessIncomeTaxNum"),
|
|
BusinessRegDate = data["BusinessRegDate"].GetDateTime(),
|
|
BusinessIncomeDate = data["BusinessIncomeDate"].GetDateTime(),
|
|
BusinessAddress = FieldValidators.EnsureNotNullOrEmpty(data["BusinessAddress"].GetString(), "BusinessAddress"),
|
|
BusinessCity = FieldValidators.EnsureNotNullOrEmpty(data["BusinessCity"].GetString(), "BusinessCity"),
|
|
PostalCode = FieldValidators.EnsureNotLessZero(data["PostalCode"].GetInt32(), "PostalCode"),
|
|
};
|
|
var result = (MerchantBusinessDetail)await _merchantRepository.PostM_BusinessDetailsAsync(merchantBusinessDetail);
|
|
|
|
|
|
if (data["ShareHolders"].ValueKind == JsonValueKind.Array)
|
|
{
|
|
foreach (var shareHolder in data["ShareHolders"].EnumerateArray())
|
|
{
|
|
var shareHolderDetail = new MerchantShareHolders
|
|
{
|
|
FK_MBusinessId = result.Id,
|
|
S_FullName = FieldValidators.EnsureNotNullOrEmpty(shareHolder.GetProperty("S_FullName").GetString(), "S_FullName"),
|
|
S_IdNumber = FieldValidators.EnsureNotNullOrEmpty(shareHolder.GetProperty("S_IdNumber").GetString(), "S_IdNumber"),
|
|
S_MobileNumber = FieldValidators.IsValidPhoneNumber(shareHolder.GetProperty("S_MobileNumber").GetString(), "S_MobileNumber"),
|
|
S_Address = FieldValidators.EnsureNotNullOrEmpty(shareHolder.GetProperty("S_Address").GetString(), "S_Address"),
|
|
S_SharePercentage = shareHolder.GetProperty("S_SharePercentage").GetDecimal(),
|
|
Bithday = shareHolder.GetProperty("Bithday").GetDateTime(),
|
|
};
|
|
await _merchantRepository.PostM_ShareHolderDetailsAsync(shareHolderDetail);
|
|
}
|
|
}
|
|
|
|
if (data["Directors"].ValueKind == JsonValueKind.Array)
|
|
{
|
|
foreach (var directors in data["Directors"].EnumerateArray())
|
|
{
|
|
var DirectorsDetail = new MerchantDirectors
|
|
{
|
|
FK_MBusinessId = result.Id,
|
|
D_FullName = FieldValidators.EnsureNotNullOrEmpty(directors.GetProperty("D_FullName").GetString(), "D_FullName"),
|
|
D_IdNumber = FieldValidators.EnsureNotNullOrEmpty(directors.GetProperty("D_IdNumber").GetString(), "D_IdNumber"),
|
|
D_MobileNumber = FieldValidators.IsValidPhoneNumber(directors.GetProperty("D_MobileNumber").GetString(), "D_MobileNumber"),
|
|
D_Address = FieldValidators.EnsureNotNullOrEmpty(directors.GetProperty("D_Address").GetString(), "D_Address"),
|
|
Birthday = directors.GetProperty("D_Bithday").GetDateTime(),
|
|
};
|
|
await _merchantRepository.PostM_DiretorDetailsAsync(DirectorsDetail);
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
else
|
|
{
|
|
throw new InvalidOperationException("Merchant is not approved for onboarding.");
|
|
}
|
|
}
|
|
|
|
public override async Task<object> GetM_BankDetails(object payload)
|
|
{
|
|
var data = DeserializePayload(payload);
|
|
int merchantId = FieldValidators.EnsureNotLessZero(data["MerchantId"].GetInt32(), "MerchantId");
|
|
var result = await _merchantRepository.GetM_BankDetailsAsync(merchantId);
|
|
return result;
|
|
}
|
|
|
|
public override async Task<object> PostM_BankDetails(object payload)
|
|
{
|
|
var data = DeserializePayload(payload);
|
|
int approveStatus = await _merchantRepository.CheckApprovedStatus(data["MechantId"].GetInt32(), "MerchantBankDetail");
|
|
if (approveStatus == 2)
|
|
{
|
|
var merchantBankDetails = new MerchantBankDetails
|
|
{
|
|
FK_MId = FieldValidators.EnsureNotLessZero(data["MechantId"].GetInt32(), "MechantId"),
|
|
CurrencyCode = FieldValidators.EnsureNotNullOrEmpty(data["CurrencyCode"].GetString(), "CurrencyCode"),
|
|
BankAccountTypes = (BankAccountTypes)FieldValidators.EnsureNotLessZero(data["BankAccountTypes"].GetInt32(), "BankAccountTypes"),
|
|
M_BankName = FieldValidators.EnsureNotNullOrEmpty(data["M_BankName"].GetString(), "M_BankName"),
|
|
M_BankBranchName = FieldValidators.EnsureNotNullOrEmpty(data["M_BankBranchName"].GetString(), "M_BankBranchName"),
|
|
M_BankAccNum = FieldValidators.EnsureNotLessZero(data["M_BankAccNum"].GetInt32(), "M_BankAccNum"),
|
|
M_BankAccHolderName = FieldValidators.EnsureNotNullOrEmpty(data["M_BankAccHolderName"].GetString(), "M_BankAccHolderName"),
|
|
M_BankHolderIdNum = FieldValidators.EnsureNotNullOrEmpty(data["M_BankHolderIdNum"].GetString(), "M_BankHolderIdNum"),
|
|
M_PhoneNum = FieldValidators.IsValidPhoneNumber(data["M_PhoneNum"].GetString(), "M_PhoneNum")
|
|
};
|
|
var result = await _merchantRepository.PostM_BankDetailsAsync(merchantBankDetails);
|
|
return result;
|
|
}
|
|
else
|
|
{
|
|
throw new InvalidOperationException("Merchant is not approved for onboarding.");
|
|
}
|
|
}
|
|
|
|
|
|
//-------------------------------------------Merchant_Onboarding_End----------------------------------//
|
|
}
|
|
}
|