Ejemplo n.º 1
0
        public async Task <ApiResponseDto <bool> > AddFirstTimeUserTransaction(FirstTimeUserTransactionRegisterationDto registerationDto)
        {
            var merchantToRegister     = registerationDto.Merchant;
            var merchantBankingDetails = registerationDto.MerchantBankingDetails;
            var buyerToRegiser         = registerationDto.Buyer;
            var buyerBankingDetails    = registerationDto.BuyerBankingDetails;

            await _authServices.Register(merchantToRegister);

            await _authServices.Register(buyerToRegiser);


            var merchant = await _userRepo.FindUserByEmail(merchantToRegister.Email);

            var buyer = await _userRepo.FindUserByEmail(buyerToRegiser.Email);

            if (merchant == null || buyer == null)
            {
                return(new ApiResponseDto <bool>(500, "An error occured while creating transaction, please try again",
                                                 "Error creating transaction", false));
            }


            await _bankingService.SaveBankingDetails((long)merchant.Id, merchantBankingDetails);

            await _bankingService.SaveBankingDetails((long)buyer.Id, buyerBankingDetails);

            var transaction = new Transaction()
            {
                Code        = await GenerateTransactionCode(),
                ProductName = registerationDto.ProductName,
                Category    = registerationDto.Category,
                Charges     = registerationDto.Charges,
                Description = registerationDto.Description,
                Merchant    = merchant,
                Buyer       = buyer
            };

            _transRepo.AddTransaction(transaction);
            var isUpdated = await _transRepo.SaveChanges();

            if (!isUpdated)
            {
                return(new ApiResponseDto <bool>(500, "An error occured while creating transaction, login in to your account and try again",
                                                 "Error creating transaction", false));
            }
            await _mailingServices.SendTransactionMail(merchant, buyer);

            await _mailingServices.SendTransactionMail(buyer, merchant);

            return(new ApiResponseDto <bool>(200, "Transaction successfully created, check your email for transaction details", null, true));
        }
Ejemplo n.º 2
0
        public async Task <ActionResult> FirstTimeTransactionRegistration([FromBody] FirstTimeUserTransactionRegisterationDto registerationDto)
        {
            var response = await _tranService.AddFirstTimeUserTransaction(registerationDto);

            return(StatusCode(response.Status, response));
        }