public async Task <GenericResponse <SubAccountResp> > CreateSubAccount(SubAccountVm data) { //todo Cleanups //create subaccount var requestUri = "https://api.paystack.co/subaccount";// $"{BaseUrl}"; SetUrlToken(); var response = await HttpRequestFactory.Post(requestUri, data); var outputModel = response.ContentAsType <SubAccountResp>(); if (outputModel.Status) { return(new GenericResponse <SubAccountResp>() { Message = "Create", ResponseCode = ResponseCode.Ok, Result = outputModel }); } else { return(new GenericResponse <SubAccountResp>() { Message = outputModel.Message, ResponseCode = ResponseCode.BadRequest, Result = null }); } }
public async Task <IHttpActionResult> Register(RegisterModel model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var applicationUsers = UserManager.Users.Where(a => a.Email == model.Email).ToList(); if (applicationUsers.Any() && !model.CreateWithExistingEmail) { return(BadRequest("Email Already Exits")); } if (applicationUsers.Any() && model.CreateWithExistingEmail) { //check profile var profile = _customerProfileService.CustomeProfileByBvn(model.Email).ToList(); if (profile.Any()) { //create account _customerAccounntService.Insert(new CustomerAccounnt() { Bvn = model.Bvn, AccountNo = model.AccountNo, DateCreated = DateTime.Now , AccountName = $"{ model.FirstName} { model.LastName}", CustomerProfileId = profile.FirstOrDefault()?.Id, AccountType = "" }); _unitOfWork.SaveChanges(); } else { //create profile and account _customerProfileService.Insert(new CustomerProfile() { PhoneNo = model.PhoneNo, DateCreated = DateTime.Now, Bvn = model.Bvn, Certificate = model.Certificate, CorporateName = model.CorporateName, Dob = model.Dob, Gender = model.Gender, RcBnNo = model.BnRcNumber, CustomerAccounnts = new List <CustomerAccounnt>() { new CustomerAccounnt() { Bvn = model.Bvn, AccountNo = model.AccountNo, DateCreated = DateTime.Now , AccountName = $"{ model.FirstName} { model.LastName}", AccountType = "" } } }); _unitOfWork.SaveChanges(); } } else { if (!applicationUsers.Any()) { //create account var user = new ApplicationUser() { UserName = model.Email, Email = model.Email }; IdentityResult result = await UserManager.CreateAsync(user, model.Password); if (!result.Succeeded) { return(GetErrorResult(result)); } //create profile and account _customerProfileService.Insert(new CustomerProfile() { PhoneNo = model.PhoneNo, DateCreated = DateTime.Now, Bvn = model.Bvn, Certificate = model.Certificate, CorporateName = model.CorporateName, Dob = model.Dob, Gender = model.Gender, RcBnNo = model.BnRcNumber, CustomerAccounnts = new List <CustomerAccounnt>() { new CustomerAccounnt() { Bvn = model.Bvn, AccountNo = model.AccountNo, DateCreated = DateTime.Now , AccountName = $"{ model.FirstName} { model.LastName}", AccountType = "" } } }); _unitOfWork.SaveChanges(); } } var subAccountVm = new SubAccountVm() { AccountNumber = model.AccountNo, BusinessName = model.CorporateName, PercentageCharge = 10, PrimaryContactEmail = model.Email, PrimaryContactName = $"{model.FirstName} {model.LastName}", PrimaryContactPhone = model.PhoneNo, SettlementBank = model.BankName }; var resultF = await _httpService.CreateSubAccount(subAccountVm); if (resultF.ResponseCode == ResponseCode.Ok) { } return(Ok()); }