Beispiel #1
0
        public ReceiptVoucher SaveFailedReceiptVoucher(ReceiptVoucherViewModel receiptVoucher, long transactionId)
        {
            //Insert into failed reciept vouchers only
            try
            {
                using (var paymentMgr = new PaymentManager())
                {
                    return(paymentMgr.SaveFailedReceiptVoucher(receiptVoucher, transactionId));
                }
            }
            catch (Exception ex)
            {
                IExceptionLogger logger = new DefaultExceptionLogger();
                logger.Log("Error", ex);
                return(null);
            }
            finally
            {
                //string ToEmails = ConfigurationManager.AppSettings["PaymentFailureEmails"].ToString();
                SettingStoreBase _storeBase;
                _storeBase = new SettingStoreBase(new LaborServicesDbContext());
                string ToEmails = _storeBase.GetSettingValueByName("PaymentFailureEmails");
                string CCEmail  = "";
                string subject  = "خطأ في إنشاء سند قبض للعميل من علي البورتال";
                string body     = " خطأ في إنشاء سند قبض للعميل رقم ";
                body += receiptVoucher.Customerid;
                body += " من علي البورتال لعقد رقم ";
                body += receiptVoucher.contractid;

                MailSender.SendEmail02(ToEmails, CCEmail, subject, body, false, "");
            }
        }
Beispiel #2
0
        public virtual Task <APIResponseModel <ReceiptVoucherViewModel> > CreateReceiptVoucher(DomesticInvoice invoice)
        {
            CultureInfo             info = new CultureInfo("en-us");
            ReceiptVoucherViewModel data = new ReceiptVoucherViewModel()
            {
                contractid     = invoice.ContractId,
                Customerid     = invoice.CustomerId,
                Contractnumber = invoice.Contract,
                InvoiceNumber  = invoice.Number,
                amount         = invoice.InvoiceAmount.ToString(),
                datatime       = DateTime.Now.ToString("dd/MM/yyyy", info.DateTimeFormat),
                paymentcode    = "2",
                vatrate        = "0.0",
                who            = AppConstants.Who_WebSource,
                InvoiceId      = invoice.Id
            };

            try
            {
                var caller = new ApiCaller(Lang);
                var apiUrl = String.Format("api/Payment/Individual/AddRecieptVoucher");
                return(caller.PostResourceAsync <ReceiptVoucherViewModel>(apiUrl, data));
            }
            catch (Exception ex)
            {
                IExceptionLogger logger = new DefaultExceptionLogger();
                logger.Log("Error", ex);

                return(new Task <APIResponseModel <ReceiptVoucherViewModel> >(() => new APIResponseModel <ReceiptVoucherViewModel>()
                {
                    StatusCode = System.Net.HttpStatusCode.InternalServerError, Result = data
                }));
            }
        }
        public async Task <ReceiptVoucherViewModel> CreateReceiptVoucher(ServiceContractPerHour contractToPay, PaymentTransaction newTransaction)
        {
            var paymentMgr = new PaymentManager();

            try
            {
                var data = new ReceiptVoucherViewModel();
                data.contractid     = contractToPay.ContractId;
                data.Customerid     = contractToPay.CustomerId;
                data.Contractnumber = contractToPay.ContractNum;
                data.amount         = contractToPay.totalpricewithoutvat;

                CultureInfo info = new CultureInfo("en-us");
                data.datatime    = DateTime.Now.ToString("dd/MM/yyyy", info.DateTimeFormat);
                data.paymentcode = "2";//ToDo
                data.paymenttype = 2;
                data.vatrate     = contractToPay.vatrate;
                data.who         = 2;
                var newVoucher = await PostResourceAsync <ReceiptVoucherViewModel>("api/Payment/AddRecieptVoucher", data);

                if (newVoucher.StatusCode == HttpStatusCode.OK)
                {
                    //SaveFailedReceiptVoucher(contractToPay, newTransaction);
                    return(newVoucher.Result);
                }
                else
                {
                    return(paymentMgr.SaveFailedReceiptVoucher(contractToPay, newTransaction));
                }
            }
            catch (Exception ex)
            {
                return(paymentMgr.SaveFailedReceiptVoucher(contractToPay, newTransaction));
            }
        }
        public ReceiptVoucher SaveFailedReceiptVoucher(ReceiptVoucherViewModel receiptVoucher, long transactionId)
        {
            var receipt = new ReceiptVoucher();

            receipt.ContractId     = receiptVoucher.contractid;
            receipt.CustomerId     = receiptVoucher.Customerid;
            receipt.ContractNumber = receiptVoucher.Contractnumber;
            receipt.Amount         = Convert.ToDecimal(receiptVoucher.amount);

            CultureInfo info1 = new CultureInfo("en-us");

            receipt.Date          = DateTime.Now.ToString("MM/dd/yyyy", info1.DateTimeFormat);
            receipt.PaymentCode   = "2";//ToDo
            receipt.PaymentType   = 2;
            receipt.VatRate       = Convert.ToDecimal(receiptVoucher.vatrate);
            receipt.Who           = 2;
            receipt.IsSaved       = false;
            receipt.CreatedDate   = DateTime.Now.ToString("MM/dd/yyyy", info1.DateTimeFormat);
            receipt.ModifiedDate  = DateTime.Now.ToString("MM/dd/yyyy", info1.DateTimeFormat);
            receipt.TransactionId = transactionId;

            return(_ReceiptVoucherStoreBase.Create(receipt));
        }
        public async Task <ReceiptVoucherViewModel> CreateReceiptVoucher(ContractViewModel contractToPay, PaymentTransaction newTransaction)
        {
            try
            {
                var data = new ReceiptVoucherViewModel();
                data.contractid     = contractToPay.ContractId;
                data.Customerid     = contractToPay.CustomerId;
                data.Contractnumber = contractToPay.ContractNum;
                data.amount         = contractToPay.PriceBeforeDiscount;

                CultureInfo info = new CultureInfo("en-us");
                data.datatime    = DateTime.Now.ToString("dd/MM/yyyy", info.DateTimeFormat);
                data.paymentcode = "2";//ToDo
                data.paymenttype = 2;
                data.vatrate     = contractToPay.VatRate;
                data.who         = 2;
                var newVoucher = await PostResourceAsync <ReceiptVoucherViewModel>("api/Payment/AddRecieptVoucher", data);

                if (newVoucher.StatusCode == HttpStatusCode.OK)
                {
                    //SaveFailedReceiptVoucher(contractToPay, newTransaction);
                    return(newVoucher.Result);
                }
                else
                {
                    return(SaveFailedReceiptVoucher(contractToPay, newTransaction));
                }
            }
            catch (Exception ex)
            {
                IExceptionLogger logger = new DefaultExceptionLogger();
                logger.Log("Error", ex);

                return(SaveFailedReceiptVoucher(contractToPay, newTransaction));
            }
        }
        public async Task <ActionResult> Status()
        {
            string fullCheckoutId           = Request.QueryString["id"].ToString();
            string fullCheckoutResourcePath = Request.QueryString["resourcePath"].ToString();
            string realCheckoutId           = fullCheckoutId;
            //"6D6477C462F95472B02F00779D233FA4.prod01-vm-tx01"
            ContractViewModel  contractToPay = Session["contractToPay"] as ContractViewModel;
            PaymentTransaction transaction   = new PaymentTransaction();

            if (!string.IsNullOrEmpty(realCheckoutId))
            {
                Dictionary <string, dynamic> paymentStatusResult = StatuesRequestRequest(realCheckoutId);

                string requiredValue = paymentStatusResult["result"]["description"];
                string requiredCode  = paymentStatusResult["result"]["code"];//000.100.112 success

                string UserId      = Session["UserId"].ToString();
                var    currentUser = UserManager.FindById(UserId);
                transaction.CustomerId   = currentUser.CrmUserId;
                contractToPay.CustomerId = currentUser.CrmUserId;


                transaction.ContractId        = contractToPay.ContractId;
                transaction.PaymentStatus     = requiredCode;
                transaction.PaymentStatusName = requiredValue;
                transaction.Amount            = Convert.ToDecimal(contractToPay.FinalPrice);
                transaction.Who = 2;

                //000.000.000   Live Transaction Success Code
                //Transaction succeeded
                if (requiredCode == "000.000.000" || requiredValue == "Transaction succeeded")
                {
                    transaction.EntityName = "Successfull Payment Transaction for Contract Number [ " + contractToPay.ContractNum + " ] with Total price of : [ " + contractToPay.FinalPrice + " SR ] and customer : [ " + contractToPay.CustomerId + " ]";

                    transaction.CreatedDate    = DateTime.Now;
                    transaction.ModifiedDate   = DateTime.Now;
                    transaction.IsVoucherSaved = false;

                    PaymentTransaction newTransaction = Create(transaction);

                    ReceiptVoucherViewModel model = await CreateReceiptVoucher(contractToPay, newTransaction);

                    newTransaction.IsVoucherSaved = model != null ? true : false;
                    Update(newTransaction);


                    return(RedirectToAction("Success", new { id = transaction.ContractId }));
                }
                else
                {
                    transaction.EntityName     = "Failed Payment Transaction for Contract Number [ " + contractToPay.ContractNum + " ] with Total price of : [ " + contractToPay.FinalPrice + " SR ] and customer : [ " + contractToPay.CustomerId + " ]";
                    transaction.IsVoucherSaved = false;
                    transaction.CreatedDate    = DateTime.Now;
                    transaction.ModifiedDate   = DateTime.Now;
                    Create(transaction);

                    return(RedirectToAction("Failure", new { reason = requiredValue, id = transaction.ContractId }));
                }
            }
            else
            {
                transaction.CustomerId        = contractToPay.CustomerId;
                transaction.ContractId        = contractToPay.ContractId;
                transaction.PaymentStatus     = "000000";
                transaction.PaymentStatusName = "Checkout payment failed";
                transaction.Amount            = Convert.ToDecimal(contractToPay.FinalPrice);
                transaction.Who            = 2;
                transaction.EntityName     = "Failed Payment Transaction for Contract Number [ " + contractToPay.ContractNum + " ] with Total price of : [ " + contractToPay.FinalPrice + " SR ] and customer : [ " + contractToPay.CustomerId + " ]";
                transaction.IsVoucherSaved = false;
                transaction.CreatedDate    = DateTime.Now;
                transaction.ModifiedDate   = DateTime.Now;
                Create(transaction);
                return(RedirectToAction("Failure", new { reason = "There is not checkout id retrieved for this payment" }));
            }
        }