Ejemplo n.º 1
0
        public IHttpActionResult PutAssociatedAccount(int id, AssociatedAccount associatedAccount)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != associatedAccount.AssociatedAccountID)
            {
                return(BadRequest());
            }

            db.Entry(associatedAccount).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!AssociatedAccountExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
Ejemplo n.º 2
0
        public IHttpActionResult GetAssociatedAccount(int id)
        {
            AssociatedAccount associatedAccount = db.AssociatedAccounts.Find(id);

            if (associatedAccount == null)
            {
                return(NotFound());
            }

            return(Ok(associatedAccount));
        }
Ejemplo n.º 3
0
        public IHttpActionResult PostAssociatedAccount(AssociatedAccount associatedAccount)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.AssociatedAccounts.Add(associatedAccount);
            db.SaveChanges();

            return(CreatedAtRoute("DefaultApi", new { id = associatedAccount.AssociatedAccountID }, associatedAccount));
        }
Ejemplo n.º 4
0
        public IHttpActionResult DeleteAssociatedAccount(int id)
        {
            AssociatedAccount associatedAccount = db.AssociatedAccounts.Find(id);

            if (associatedAccount == null)
            {
                return(NotFound());
            }

            db.AssociatedAccounts.Remove(associatedAccount);
            db.SaveChanges();

            return(Ok(associatedAccount));
        }
Ejemplo n.º 5
0
        public IHttpActionResult PostUpdateAssociatedAccount(AssociatedAccount associatedAccoount)
        {
            var userId         = User.Identity.GetUserId();
            var userAccounts   = db.AssociatedAccounts.Where(p => p.UserID == userId);
            var currentAccount = userAccounts.Where(p => p.AssociatedAccountID == associatedAccoount.AssociatedAccountID).First();

            currentAccount.Description3 = associatedAccoount.Description3;
            if (associatedAccoount.DefaultAccount)
            {
                foreach (var account in userAccounts)
                {
                    account.DefaultAccount = false;
                }
                currentAccount.DefaultAccount = associatedAccoount.DefaultAccount;
            }
            db.SaveChanges();
            //currentAccount.
            return(Ok(currentAccount));
        }
Ejemplo n.º 6
0
        public async Task <IHttpActionResult> PostTopUpRequest(TopUpRequest topUpRequest)
        {
            //return NotFound();
            Guid          fiId          = Guid.Parse(fiIdString);
            TopUpResponse topUpResponse = new TopUpResponse();

            Helpers.Transfer_Light transfer = new Helpers.Transfer_Light();
            switch (topUpRequest.CarrierID)
            {
            case "Digicel":
                string userId       = User.Identity.GetUserId();
                var    userAccounts = db.AssociatedAccounts.Where(p => p.UserID.Equals(userId));
                var    fromAcct     = userAccounts.Where(p => p.AssociatedAccountID == topUpRequest.AssociatedAccountID).FirstOrDefault();
                var    minorAcct    = userAccounts.Where(p => p.Description2.Equals("EPAY DIGICEL TOPUP")).FirstOrDefault();
                if (fromAcct == null)
                {
                    topUpResponse.Message    = "Invalid source account specified.";
                    topUpResponse.Successful = false;
                }
                //if(minorAcct != null)
                //{
                ////###################################################
                //// Set maximum TopUps to a single number
                ////###################################################
                //int totalTopUps = db.Transfers.Where(p => p.BillerAccountNumber.Equals(topUpRequest.MobileNumber)).Count();
                //if (totalTopUps > 2)
                //{
                //    topUpResponse.Message = "Test credit has been depleted.";
                //    topUpResponse.Successful = false;
                //}
                //else
                //{
                //    topUpRequest.Amount = 5;
                //    //return Ok(DigicelTopUp.TopUp(topUpRequest.MobileNumber, topUpRequest.Amount));
                //    DigicelTopUpResponse digicelTopUpResponse = DigicelTopUp.TopUp(topUpRequest.Territory, topUpRequest.MobileNumber, topUpRequest.Amount);
                //    topUpResponse.Successful = digicelTopUpResponse.Code == "0";
                //    topUpResponse.Message = digicelTopUpResponse.Message;
                //    topUpResponse.TransactionID = digicelTopUpResponse.TransactionID;
                //}
                ////##############################################

                //################################################
                //      LIVE CODE
                //################################################
                //DigicelTopUpResponse digicelTopUpResponse = DigicelTopUp.TopUp(topUpRequest.Territory, topUpRequest.MobileNumber, topUpRequest.Amount);
                //topUpResponse.Successful = digicelTopUpResponse.Code == "0";
                //topUpResponse.Message = digicelTopUpResponse.Message;
                //topUpResponse.TransactionID = digicelTopUpResponse.TransactionID;
                //################################################

                //################################################
                //      TEST CODE
                //################################################
                DigicelTopUpResponse digicelTopUpResponse = new DigicelTopUpResponse
                {
                    Code          = "0",
                    Message       = "TopUp to " + topUpRequest.MobileNumber + " Successful",
                    TransactionID = Guid.NewGuid().ToString()
                };
                topUpResponse.Successful    = digicelTopUpResponse.Code == "0";
                topUpResponse.Message       = digicelTopUpResponse.Message;
                topUpResponse.TransactionID = digicelTopUpResponse.TransactionID;
                //################################################
                //}
                //else
                //{
                //    topUpResponse.Message = "Your account has not been provisioned for this transaction.";
                //    topUpResponse.Successful = false;
                //}

                if (!topUpResponse.Successful)
                {
                    return(Ok(topUpResponse.Message));
                }


                //################################################
                //      LIVE CODE
                //################################################
                //string encryptedPin = db.PINs.Where(p => p.FinancialInstitutionID == fiId && p.UserID == userId).Select(p => p.Pin).First();
                //string decryptedPin = Helpers.StringCipher.Decrypt(encryptedPin, userId);

                //transfer.fromAcct = fromAcct.AccountNumber;
                //transfer.amount = (double)topUpRequest.Amount;
                //transfer.toAccountNumber = minorAcct.AccountNumber;
                //transfer.memid = fromAcct.MemberID;
                //transfer.pin = decryptedPin;

                //string transferResponse = await COB.TransferFunds(transfer);
                //string[] transferResponseArray = transferResponse.Split(new string[] { "ITC" }, StringSplitOptions.RemoveEmptyEntries)[0].Split(new char[] { '\t' }, StringSplitOptions.RemoveEmptyEntries);
                //if (transferResponseArray[1][0] != '1')
                //{
                //    //topUpResponse.Successful = false;
                //    topUpResponse.Message = transferResponseArray[1];
                //    //return Ok(topUpResponse);
                //}
                //################################################


                break;

            case "Ozone":
                BillPaymentResponse response = await MiddleWare.Ozone.OzoneBillPaymentProxy.PayBill(new BillPaymentRequest
                {
                    Amount = topUpRequest.Amount,
                    AssociatedAccountID = topUpRequest.AssociatedAccountID,
                    BillerAccountNumber = topUpRequest.MobileNumber,
                    BillerID            = "869cd85f-c155-429e-8ded-b92f41b61ec1"
                });

                topUpResponse.Successful    = response.Successful;
                topUpResponse.Message       = response.Message;
                topUpResponse.TransactionID = response.TransactionID;
                break;

            default:
                topUpResponse.Successful = false;
                topUpResponse.Message    = "Invalid Mobile Provider";
                break;
            }

            AssociatedAccount account = db.AssociatedAccounts.Where(p => p.AssociatedAccountID == topUpRequest.AssociatedAccountID).First();
            Guid billerId             = db.Billers.Where(p => p.Name.Equals(topUpRequest.CarrierID)).Select(p => p.BillerID).First();

            db.Transfers.Add(new E_Pay_Web_API.Models.Transfer
            {
                SourceTransactionID = DateTime.Now.ToString("yyyyMMdd-mmss"),
                SourceAccountNumber = account.AccountNumber,
                SourceAccountID     = account.AssociatedAccountID,
                SourceInstitutionID = account.FinancialInstitutionID,
                MinorAccountNumber  = transfer.toAccountNumber,
                BillerID            = billerId,
                //BillerID = Guid.Parse(topUpRequest.CarrierID),
                BillerAccountNumber = topUpRequest.MobileNumber,
                BillerTransactionID = topUpResponse.TransactionID,
                TransferAmount      = topUpRequest.Amount,
                TransferDescription = topUpRequest.CarrierID + " - TopUp",
                Status            = topUpResponse.Successful ? "Successful" : "Error",
                StatusDescription = topUpResponse.Message,
                Created           = DateTime.Now
            });
            db.SaveChanges();

            if (topUpResponse.Successful)
            {
                MailSender.SendMessage(
                    User.Identity.GetUserName(),
                    "E-Pay Top Up Confirmation and Receipt of Mobile Top Up Sent",
                    "Congratulations your order has been completed successfully.\r\n\r\n"
                    + "1 successful\r\n\r\n"
                    + "Order ID: " + topUpResponse.TransactionID + "\r\n"
                    + "Product: Mobile Top Up\r\n"
                    + "Number: " + topUpRequest.MobileNumber + "\r\n"
                    + "Country: Barbados\r\n"
                    + "Top-up Amount: BBD $" + topUpRequest.Amount.ToString() + "\r\n"
                    + "Receive Amount: BBD $" + topUpRequest.Amount.ToString() + "\r\n\r\n\r\n"
                    + "Date & Time: " + DateTime.Now.ToString() + "\r\n\r\n"
                    + "Amount Paid:  BBD $" + topUpRequest.Amount.ToString() + "\r\n\r\n"
                    + "From Account: " + account.Description + ": " + account.Description3 + " - " + account.AccountNumber + "\r\n\r\n"
                    + "If you have any queries, please contact our customer care team.\r\n"
                    + "Thanks,\r\n"
                    + "The E-Pay Team"
                    );
            }
            return(Ok(topUpResponse));
            //return NotFound();
        }
Ejemplo n.º 7
0
        //################################################
        //      LIVE CODE
        //################################################
        //public async Task<string> PostTransfer(E_Pay_Web_API.Helpers.Transfer_Light transfer)
        //################################################

        //################################################
        //      TEST CODE
        //################################################
        public string PostTransfer(E_Pay_Web_API.Helpers.Transfer_Light transfer)
        //################################################
        {
            try
            {
                Guid              fiId          = Guid.Parse(fiIdString);
                string            userId        = User.Identity.GetUserId();
                var               manager       = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(new ApplicationDbContext()));
                ApplicationUser   targetUser    = new ApplicationUser();
                AssociatedAccount targetAccount = new AssociatedAccount();
                switch (transfer.toInfoType)
                {
                case "EmailAddress":
                    targetUser = manager.FindByEmail(transfer.toEmailAddress);
                    if (targetUser == null)
                    {
                        return("The email address provided was invalid. No account found.");
                    }
                    targetAccount = db.AssociatedAccounts.Where(p => p.UserID == targetUser.Id && p.DefaultAccount).FirstOrDefault();
                    break;

                case "AccountNumber":
                    targetAccount = db.AssociatedAccounts.Where(p => p.AccountNumber.Equals(transfer.toAccountNumber) && p.DefaultAccount).FirstOrDefault();
                    targetUser    = manager.FindById(targetAccount.UserID);
                    break;

                case "MyAccount":
                    targetAccount = db.AssociatedAccounts.Where(p => p.AccountNumber.Equals(transfer.toAccountNumber) && p.UserID == userId).FirstOrDefault();
                    targetUser    = manager.FindById(targetAccount.UserID);
                    break;
                }
                //
                var fromAccount = db.AssociatedAccounts.Where(p => p.AssociatedAccountID.ToString() == transfer.fromAcct).First();
                if (targetAccount == null)
                {
                    return("Recipient does not have a default account or the account number provided is invalid.");
                }
                string encryptedPin = db.PINs.Where(p => p.FinancialInstitutionID == fiId && p.UserID == userId).Select(p => p.Pin).First();
                string decryptedPin = Helpers.StringCipher.Decrypt(encryptedPin, userId);

                transfer.fromEmailAddress = userId;
                transfer.memid            = fromAccount.MemberID;
                transfer.fromAcct         = fromAccount.AccountNumber;
                transfer.toAccountNumber  = targetAccount.AccountNumber;
                transfer.pin = decryptedPin;

                //################################################
                //      LIVE CODE
                //################################################
                //string transferResponse = await COB.TransferFunds(transfer);
                //char transferResponseCode = transferResponse.Split(new char[] { '\t' }, StringSplitOptions.RemoveEmptyEntries)[2][1];
                //string transferMessage = transferResponse.Split(new char[] { '\t' }, StringSplitOptions.RemoveEmptyEntries)[2].Substring(1);
                //################################################

                //################################################
                //      TEST CODE
                //################################################
                string transferMessage = "OKITC";
                //################################################

                db.Transfers.Add(new Transfer
                {
                    SourceInstitutionID = fiId,
                    SourceAccountID     = fromAccount.AssociatedAccountID,
                    SourceAccountNumber = fromAccount.AccountNumber,
                    SourceTransactionID = "",
                    BillerID            = Guid.Parse(fiIdString),
                    BillerAccountNumber = targetAccount.AccountNumber,
                    BillerTransactionID = "",
                    TransferAmount      = (decimal)transfer.amount,
                    TransferDescription = "COB Internal Transfer",
                    Status            = transferMessage.Equals("OKITC") ? "Successful" : "Error",
                    StatusDescription = transferMessage,
                    Created           = DateTime.Now
                });
                db.SaveChanges();

                return(transferMessage);
            }
            catch (Exception ex)
            {
                return("A fatal error has occurred. Please try again later.");
            }
        }