Exemplo n.º 1
0
        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());
        }