public ActionResult Edit(CurrencyModel data) { try { if (ModelState.IsValid) { CLayer.Currency pt = new CLayer.Currency() { CurrencyId = data.CurrencyId, Title = data.Title, Symbol = data.Symbol, ConversionRate = data.ConversionRate, ConversionPercentage = data.ConversionPercentage, IsDefault = data.IsDefault, Status = data.Status, Exchangecode = data.Exchangecode }; BLayer.Currency.Save(pt); ViewBag.Saved = true; } else { ViewBag.Saved = false; } return(RedirectToAction("Index")); } catch (Exception ex) { Common.LogHandler.HandleError(ex); return(Redirect("~/Admin/ErrorPage")); } }
public int Save(CLayer.Currency currency) { List <DataPlug.Parameter> param = new List <DataPlug.Parameter>(); param.Add(Connection.GetParameter("pCurrencyId", DataPlug.DataType._BigInt, currency.CurrencyId)); param.Add(Connection.GetParameter("pTitle", DataPlug.DataType._Varchar, currency.Title)); param.Add(Connection.GetParameter("pSymbol", DataPlug.DataType._Varchar, currency.Symbol)); param.Add(Connection.GetParameter("pConversionRate", DataPlug.DataType._Decimal, currency.ConversionRate)); param.Add(Connection.GetParameter("pConversionPercentage", DataPlug.DataType._Decimal, currency.ConversionPercentage)); param.Add(Connection.GetParameter("pIsDefault", DataPlug.DataType._Bool, currency.IsDefault)); param.Add(Connection.GetParameter("pStatus", DataPlug.DataType._Int, currency.Status)); param.Add(Connection.GetParameter("pExchangecode", DataPlug.DataType._Varchar, currency.Exchangecode)); object result = Connection.ExecuteQueryScalar("currency_Save", param); return(Connection.ToInteger(result)); }
// // TODO Delete Currency // public CLayer.Currency Get(string code) { CLayer.Currency currency = null; DataTable dt = Connection.GetSQLTable("Select * From currency Where Title like '" + code + "'"); if (dt.Rows.Count > 0) { currency = new CLayer.Currency(); currency.CurrencyId = Connection.ToLong(dt.Rows[0]["CurrencyId"]); currency.Title = Connection.ToString(dt.Rows[0]["Title"]); currency.Symbol = Connection.ToString(dt.Rows[0]["Symbol"]); currency.ConversionRate = Connection.ToDecimal(dt.Rows[0]["ConversionRate"]); currency.ConversionPercentage = Connection.ToDecimal(dt.Rows[0]["ConversionPercentage"]); currency.LastUpdate = Connection.ToDate(dt.Rows[0]["LastUpdate"]); currency.IsDefault = Connection.ToBoolean(dt.Rows[0]["IsDefault"]); currency.Status = Connection.ToInteger(dt.Rows[0]["Status"]); currency.Exchangecode = Connection.ToString(dt.Rows[0]["ExchgCode"]); } return(currency); }
public CLayer.Currency Get(int CurrencyId) { CLayer.Currency currency = null; List <DataPlug.Parameter> param = new List <DataPlug.Parameter>(); param.Add(Connection.GetParameter("pCurrencyId", DataPlug.DataType._BigInt, CurrencyId)); DataTable dt = Connection.GetTable("currency_Get", param); if (dt.Rows.Count > 0) { currency = new CLayer.Currency(); currency.CurrencyId = Connection.ToLong(dt.Rows[0]["CurrencyId"]); currency.Title = Connection.ToString(dt.Rows[0]["Title"]); currency.Symbol = Connection.ToString(dt.Rows[0]["Symbol"]); currency.ConversionRate = Connection.ToDecimal(dt.Rows[0]["ConversionRate"]); currency.ConversionPercentage = Connection.ToDecimal(dt.Rows[0]["ConversionPercentage"]); currency.LastUpdate = Connection.ToDate(dt.Rows[0]["LastUpdate"]); currency.IsDefault = Connection.ToBoolean(dt.Rows[0]["IsDefault"]); currency.Status = Connection.ToInteger(dt.Rows[0]["Status"]); currency.Exchangecode = Connection.ToString(dt.Rows[0]["ExchgCode"]); } return(currency); }
public ActionResult GET(int id) { try { ViewBag.Saved = false; CurrencyModel mbt = new CurrencyModel() { CurrencyId = 0 }; CLayer.Currency pt = BLayer.Currency.Get(id); if (pt != null) { mbt = new CurrencyModel() { CurrencyId = pt.CurrencyId, Title = pt.Title, Symbol = pt.Symbol, ConversionRate = pt.ConversionRate, ConversionPercentage = pt.ConversionPercentage, IsDefault = pt.IsDefault, Exchangecode = pt.Exchangecode, Status = pt.Status } } ; return(PartialView("_Edit", mbt)); } catch (Exception ex) { Common.LogHandler.HandleError(ex); return(Redirect("~/Admin/ErrorPage")); } }
public static int Save(CLayer.Currency currencydata) { DataLayer.Currency currency = new DataLayer.Currency(); //currencydata.Validate(); return(currency.Save(currencydata)); }
public RedirectResult SaveOfflinePaybyPaypal(Models.OfflinePaymentModel data) { string errorPage = System.Configuration.ConfigurationManager.AppSettings.Get(PAYMENT_FAILED_LINK); try { long UserId = GetUserId(); CLayer.OfflinePayment dt = new CLayer.OfflinePayment(); dt.Name = data.Name; dt.Amount = data.Amount; dt.ReferenceNumber = data.ReferenceNumber; dt.Message = data.Message; dt.UserId = UserId; dt.Address = data.Address; dt.CountryId = data.CountryId; dt.StateId = data.State; dt.CityId = data.CityId; if (data.City != null && data.City != "") { dt.City = data.City; } if (data.CityId > 0) { dt.City = BLayer.City.Get(data.CityId).Name; } dt.Email = data.Email; dt.Mobile = data.Mobile; dt.ZipCode = data.ZipCode; dt.Gatewaytype = (int)CLayer.ObjectStatus.Gateway.PayPal; CLayer.Role.Roles rle = BLayer.User.GetRole(UserId); long OfflinePaymentId = BLayer.OfflinePayment.SaveInitialPaymentData(dt); string PaymentRefNo = " "; string token = ""; try { //load paypal url from settings string url = BLayer.Settings.GetValue(CLayer.Settings.PAYPAL_TOKEN_URL); WebRequest rqst = HttpWebRequest.Create(url); rqst.Method = "POST"; string user, pwd, signature, returnurl, cancelurl; user = BLayer.Settings.GetValue(CLayer.Settings.PAYPAL_USER); pwd = BLayer.Settings.GetValue(CLayer.Settings.PAYPAL_PWD); signature = BLayer.Settings.GetValue(CLayer.Settings.PAYPAL_SIGNAUTRE); returnurl = BLayer.Settings.GetValue(CLayer.Settings.OFFLINE_PAYPAL_RETURN_URL); cancelurl = BLayer.Settings.GetValue(CLayer.Settings.PAYPAL_CANCELURL); CLayer.Currency cur = BLayer.Currency.Get("USD"); if (cur == null) { throw new Exception("Cannot find USD conversion rate for Paypal booking"); } decimal amount = data.Amount; amount = Math.Round(amount * cur.ConversionRate, 2, MidpointRounding.AwayFromZero); string ProBookDes = data.Message; string postdata = "METHOD=SetExpressCheckout&VERSION=109.0"; postdata = postdata + "&USER="******"&PWD=" + pwd + "&SIGNATURE=" + signature; postdata = postdata + "&PAYMENTREQUEST_0_AMT=" + amount.ToString("F2") + "&PAYMENTREQUEST_0_CURRENCYCODE=USD" + "&PAYMENTREQUEST_0_DESC=" + ProBookDes; postdata = postdata + "&RETURNURL=" + Server.UrlEncode(returnurl); postdata = postdata + "&CANCELURL=" + Server.UrlEncode(cancelurl); postdata = postdata + "&PAYMENTREQUEST_0_PAYMENTACTION=Sale"; if (!String.IsNullOrEmpty(postdata)) { rqst.ContentType = "application/x-www-form-urlencoded"; byte[] byteData = UTF8Encoding.UTF8.GetBytes(postdata); rqst.ContentLength = byteData.Length; using (Stream postStream = rqst.GetRequestStream()) { postStream.Write(byteData, 0, byteData.Length); postStream.Close(); } } ((HttpWebRequest)rqst).KeepAlive = false; StreamReader rsps = new StreamReader(rqst.GetResponse().GetResponseStream()); string strRsps = rsps.ReadToEnd(); Debug.WriteLine(strRsps); token = PaymentController.GetToken(strRsps); if (token == "") { //(int)CLayer.ObjectStatus.OfflinePyamentStatus.Processing BLayer.OfflinePayment.SetStatus((int)CLayer.ObjectStatus.OfflinePyamentStatus.failed, OfflinePaymentId); return(Redirect(errorPage)); } } catch (Exception ex) { Common.LogHandler.HandleError(ex); BLayer.OfflinePayment.SetStatus((int)CLayer.ObjectStatus.OfflinePyamentStatus.failed, OfflinePaymentId); return(Redirect(errorPage)); } string red = BLayer.Settings.GetValue(CLayer.Settings.PAYPAL_REQUEST_URL) + token; token = Server.UrlDecode(token); //save to database PaymentRefNo = token; long OffPayId = BLayer.OfflinePayment.SetPaymentRefNo(OfflinePaymentId, rle, PaymentRefNo); BLayer.OfflinePayment.SetStatus((int)CLayer.ObjectStatus.OfflinePyamentStatus.Processing, OfflinePaymentId); return(Redirect(red)); } catch (Exception ex) { Common.LogHandler.HandleError(ex); return(Redirect(errorPage)); } }
//public static void CancelAccommodation(long bookingItemId) //{ // CLayer.BookingItem detail = BLayer.BookingItem.GetDetails(bookingItemId); // List<CLayer.Transaction> refundable = BLayer.Transaction.GetAllRefundable(detail.BookingId); // double serviceCharge = 0; // BLayer.Transaction.GetTotalCancellationServiceCharge(detail.BookingId, ref refundable, detail.Amount); // decimal cancellationCharge = 0; // decimal firstDayCharge = BLayer.BookingItem.GetFirstDayCharge(bookingItemId); // CLayer.Property prp = BLayer.Property.GetCancellationCharges(BLayer.Bookings.GetPropertyId(detail.BookingId)); // if (detail.CheckIn.AddHours(-1 * (double)prp.CancellationPeriod) <= DateTime.Now) // { // cancellationCharge = BLayer.Bookings.GetTotalCancellationCharge(prp, detail.Amount, firstDayCharge, detail.CheckIn); ; // } // //found refund amount by reducing cancellation charge, service charge will be deducted once the transaction is done // decimal RefundAmount = detail.TotalAmount - cancellationCharge; // bool CanCancel = (RefundAmount > CLayer.Settings.TRANSACTION_MIN_AMOUNT); // BLayer.BookingItem.SetStatus(bookingItemId, CLayer.ObjectStatus.StatusType.Disabled); // if (CanCancel) // { // //mark as trying // double amt = 0; // decimal tryRefund = 0; // foreach (CLayer.Transaction tran in refundable) // { // //(pPaymentId VARCHAR(12),pTryAmount DECIMAL(14,2), pTryTime DATETIME,pTotalAmount DECIMAL(14,2),pStatus INT) // serviceCharge = GetServiceCharge((CLayer.ObjectStatus.PaymentMethod)tran.PaymentType); // if (serviceCharge > 0) // { // serviceCharge = Math.Round((double)RefundAmount * serviceCharge / 100 * 2); // RefundAmount = RefundAmount - (decimal)serviceCharge; // } // if (RefundAmount <= 0) break; // amt = tran.TotalAmount; // if (amt >= (double)RefundAmount) // { // amt = amt - (double)RefundAmount; // tryRefund = RefundAmount; // RefundAmount = 0; // } // else // { // RefundAmount = RefundAmount - (decimal)amt; // tryRefund = (decimal)amt; // amt = 0; // } // tran.TryAmount = tryRefund; // tran.ServiceCharge = tran.ServiceCharge + serviceCharge; // tran.TryTime = DateTime.Today; // tran.TotalAmount = amt; // tran.Status = CLayer.ObjectStatus.TransactionStatus.TryingForRefund; // BLayer.Transaction.UpdateAmountAndStatus(tran); // // if (RefundAmount <= 0) break; // } // foreach (CLayer.Transaction tran in refundable) // { // try // { // if (tran.Status != CLayer.ObjectStatus.TransactionStatus.TryingForRefund) continue; // if (SendRefund(tran)) // { // if (tran.TotalAmount > 0) // tran.Status = CLayer.ObjectStatus.TransactionStatus.PartialRefund; // else // tran.Status = CLayer.ObjectStatus.TransactionStatus.Refunded; // tran.TryAmount = 0; // BLayer.Transaction.UpdateAmountAndStatus(tran); // } // } // catch // { } // } // //BLayer.Bookings.UpdateCharges(bookingId, cancellationCharge, (decimal)totalServiceCharge); // //BLayer.Bookings.SetRefund(bookingId, totalRefund - (decimal)totalServiceCharge); // } //} public static void CancelAllTransactions(long bookingId) { CLayer.ObjectStatus.BookingStatus BStatus = BLayer.Bookings.GetStatus(bookingId); long PayOption = BLayer.Bookings.GetPaymentoption(bookingId); CLayer.Booking detail = BLayer.Bookings.GetDetails(bookingId); List <CLayer.Transaction> refundable = BLayer.Transaction.GetAllRefundable(bookingId); double serviceCharge = 0;// BLayer.Transaction.GetTotalCancellationServiceCharge(bookingId, ref refundable); decimal cancellationCharge = 0; double totalServiceCharge = 0; decimal firstDayCharge = BLayer.Bookings.GetFirstDayCharge(bookingId); CLayer.Property prp = BLayer.Property.GetCancellationCharges(BLayer.Bookings.GetPropertyId(bookingId)); int noOfDays = (detail.CheckOut - detail.CheckIn).Days; cancellationCharge = BLayer.Bookings.GetTotalCancellationCharge(prp, detail.TotalAmount, noOfDays * firstDayCharge, detail.CheckIn); if (BStatus == CLayer.ObjectStatus.BookingStatus.BookingRequest) { cancellationCharge = 0; } decimal RefundAmountFCancel = Math.Round(detail.TotalAmount - cancellationCharge); if (PayOption == (int)CLayer.ObjectStatus.PaymentOption.FullPayment) { RefundAmountFCancel = Math.Round(detail.TotalAmount - cancellationCharge); } else if (PayOption == (int)CLayer.ObjectStatus.PaymentOption.PartialPayment) { CLayer.ObjectStatus.PartialPaymentStatus PartialPayStatus = BLayer.Bookings.GetPartialPaymentStatus(bookingId); CLayer.Booking PartBookDt = BLayer.Bookings.GetPartialBookDetailsbyBookId(bookingId); if (PartialPayStatus == CLayer.ObjectStatus.PartialPaymentStatus.InitialPaymentSuccess || PartialPayStatus == CLayer.ObjectStatus.PartialPaymentStatus.SecondPaymentFailed || PartialPayStatus == CLayer.ObjectStatus.PartialPaymentStatus.Secondpaycheckout) { RefundAmountFCancel = Math.Round(PartBookDt.PaymentFirstinstallment - cancellationCharge); } else if (PartialPayStatus == CLayer.ObjectStatus.PartialPaymentStatus.SecondPaymentSuccess) { RefundAmountFCancel = Math.Round(detail.TotalAmount - cancellationCharge); } } bool CanCancel = (RefundAmountFCancel > CLayer.Settings.TRANSACTION_MIN_AMOUNT); if (BStatus == CLayer.ObjectStatus.BookingStatus.BookingRequest) { BLayer.Bookings.SetStatus((int)CLayer.ObjectStatus.BookingStatus.Decline, bookingId); } else { BLayer.Bookings.SetStatus((int)CLayer.ObjectStatus.BookingStatus.Cancelled, bookingId); } BLayer.Bookings.SetPartialPaymentStatus((int)CLayer.ObjectStatus.PartialPaymentStatus.BookingCancel, bookingId); BLayer.Bookings.SetUpdatedDate(bookingId); decimal totalRefund = RefundAmountFCancel; long Gatewaytype = BLayer.Bookings.Getgatewaytype(bookingId); if (CanCancel) { //mark as trying double amt = 0; decimal tryRefund = 0; int countlist = 0; foreach (CLayer.Transaction tran in refundable) { decimal RefundAmount = RefundAmountFCancel; if (PayOption == (int)CLayer.ObjectStatus.PaymentOption.FullPayment) { RefundAmount = RefundAmountFCancel; } else if (PayOption == (int)CLayer.ObjectStatus.PaymentOption.PartialPayment) { CLayer.Booking PartBookDt = BLayer.Bookings.GetPartialBookDetailsbyBookId(bookingId); if (countlist == 0) { RefundAmount = Math.Round(PartBookDt.PaymentFirstinstallment - cancellationCharge); } else if (countlist == 1) { RefundAmount = Math.Round(PartBookDt.PaymentSecondinstallment - cancellationCharge); } } else { RefundAmount = RefundAmountFCancel; } serviceCharge = GetServiceCharge((CLayer.ObjectStatus.PaymentMethod)tran.PaymentType); if (serviceCharge > 0) { serviceCharge = Math.Round((double)RefundAmount * serviceCharge / 100 * 2); if (BStatus == CLayer.ObjectStatus.BookingStatus.Decline) { serviceCharge = 0; } RefundAmount = RefundAmount - (decimal)serviceCharge; } if (RefundAmount <= 0) { break; } amt = tran.TotalAmount; if (Gatewaytype == (int)CLayer.ObjectStatus.Gateway.EBS) { if (amt >= (double)RefundAmount) { amt = amt - (double)RefundAmount; tryRefund = RefundAmount; RefundAmount = 0; } else { RefundAmount = RefundAmount - (decimal)amt; tryRefund = (decimal)amt; amt = 0; } } else if (Gatewaytype == (int)CLayer.ObjectStatus.Gateway.PayPal) { CLayer.Currency cur = BLayer.Currency.Get("USD"); RefundAmount = Math.Round(RefundAmount * cur.ConversionRate, 2, MidpointRounding.AwayFromZero); if (amt >= (double)RefundAmount) { amt = amt - (double)RefundAmount; tryRefund = RefundAmount; RefundAmount = 0; } else { RefundAmount = RefundAmount - (decimal)amt; tryRefund = (decimal)amt; amt = 0; } } totalServiceCharge = totalServiceCharge + serviceCharge; tran.TryAmount += tryRefund; tran.ServiceCharge = tran.ServiceCharge + serviceCharge; //tran.TryAmount = tryRefund; //tran.ServiceCharge = tran.ServiceCharge + serviceCharge; tran.TryTime = DateTime.Today; tran.TotalAmount = amt; tran.Status = CLayer.ObjectStatus.TransactionStatus.TryingForCanc; BLayer.Transaction.UpdateAmountAndStatus(tran); // if (RefundAmount <= 0) break; countlist = countlist + 1; } //set totalservice charge and cancellation charge BLayer.Bookings.UpdateCharges(bookingId, cancellationCharge, (decimal)totalServiceCharge); BLayer.Bookings.SetRefund(bookingId, totalRefund - (decimal)totalServiceCharge); //save to booking refund //BLayer.Bookings.SaveBookingRefundAmt(bookingId, totalRefund - (decimal)totalServiceCharge, (int)CLayer.ObjectStatus.BookingChangeType.Cancel); foreach (CLayer.Transaction tran in refundable) { try { //if (tran.ResponseCode != CLayer.Transaction.TRAN_SUCCESS) //{ // continue; //} if (tran.Status != CLayer.ObjectStatus.TransactionStatus.TryingForCanc) { continue; } if (Gatewaytype == (int)CLayer.ObjectStatus.Gateway.EBS) { if (SendRefund(tran)) { // if (tran.TotalAmount > 0) // tran.Status = CLayer.ObjectStatus.TransactionStatus.PartialRefund; // else tran.Status = CLayer.ObjectStatus.TransactionStatus.Refunded; tran.TryAmount = 0; BLayer.Transaction.UpdateAmountAndStatus(tran); } } else if (Gatewaytype == (int)CLayer.ObjectStatus.Gateway.PayPal) { if (SendPayPalRefund(tran)) { tran.Status = CLayer.ObjectStatus.TransactionStatus.Refunded; tran.TryAmount = 0; BLayer.Transaction.UpdateAmountAndStatus(tran); } } } catch { } } } else { //very less amount to refund which can be less than Rs.10 BLayer.Transaction.RefundAllTransactions(bookingId); } }