public ReservationState Book([FromUri] BookingCartParam param, [FromBody] BookingClaim claim) { if (param == null) { throw new ArgumentNullException("param"); } if (claim == null) { throw new ArgumentNullException("claim"); } WebPartner partner = UserToolsProvider.GetPartner(param); if (claim.customer != null) { foreach (BookingOrder order in claim.orders) { if (order.excursion != null) { if (order.excursion.contact == null) { order.excursion.contact = new ExcursionContact(); } if (order.excursion.contact.name == null) { order.excursion.contact.name = claim.customer.name; } if (order.excursion.contact.mobile == null) { order.excursion.contact.mobile = claim.customer.mobile; } } } } return(BookingProvider.DoBooking(param.Language, partner.id, partner.passId, claim)); }
public ActionResult uniteller() { string requiredString = base.RouteData.GetRequiredString("action"); try { Tracing.DataTrace.TraceEvent(TraceEventType.Verbose, 0, "UNITELLER payment data: {0}", new object[] { base.Request.DumpValues() }); this.CheckServerAddressList(); UnitellerPaymentResult result = UnitellerPaymentResult.Create(base.Request); if (result.Status == UnitellerPaymentResult.OpeationStatus.Success) { ConfirmInvoiceResult result2 = BookingProvider.ConfirmInvoice(result.InvoiceNumber.Trim()); Tracing.DataTrace.TraceEvent(TraceEventType.Information, 0, "UNITELLER transaction: invoice: '{0}', status: '{1}', invoice confirmation: '{2}'", new object[] { result.InvoiceNumber, result.Status, result2.IsSuccess ? "SUCCESS" : "FAILED" }); if (!result2.IsSuccess) { throw new Exception(string.Format("invoice confirm error {0}", result2.ErrorMessage)); } } else { Tracing.DataTrace.TraceEvent(TraceEventType.Information, 0, "UNITELLER transaction: invoice: '{1}', status: '{2}'", new object[] { result.InvoiceNumber, result.Status }); } return(new EmptyResult()); } catch (Exception exception) { Tracing.DataTrace.TraceEvent(TraceEventType.Error, 0, "UNITELLER payment error: {0}", new object[] { exception.ToString() }); return(new HttpStatusCodeResult(500)); } }
public JsonResult AddCart(ExcursionAddWebParam param) { if (param == null) { throw new ArgumentNullException("param"); } List <string> list = new List <string>(); if (param.excursion != null) { if ((param.excursion.pax != null) && ((param.excursion.pax.adult + param.excursion.pax.child) > 0)) { if (param.cid == null) { int?nullable = null; using (ShoppingCart cart = ShoppingCart.CreateFromSession(base.Session)) { cart.PartnerAlias = param.PartnerAlias; cart.PartnerSessionID = param.psid; BookingOrder item = new BookingOrder { orderid = Guid.NewGuid().ToString(), excursion = param.excursion }; cart.Orders.Add(item); nullable = new int?(cart.Orders.Count); } return(base.Json(new { ok = true, ordercount = nullable })); } WebPartner partner = UserToolsProvider.GetPartner(param); BookingOrder order2 = new BookingOrder { orderid = Guid.NewGuid().ToString(), excursion = param.excursion }; ExternalCartAddOrderResult result = BookingProvider.ExternalCart_AddOrder(UrlLanguage.CurrentLanguage, partner, param.cid, order2); if (result.errorcode == 0) { return(base.Json(new { ok = true, ordercount = result.ordercount })); } list.Add(result.errormessage); } else { list.Add(ExcursionStrings.ResourceManager.Get("ErrorGuestCount")); } } else { list.Add(ExcursionStrings.ResourceManager.Get("ErrorInvalidParams")); } return(base.Json(new { errormessages = list.ToArray() })); }
private ActionResult Processing_Bank(int claim, PaymentMode payment) { ActionResult result4; if (payment == null) { throw new ArgumentNullException("payment"); } PaymentBeforeProcessingResult result = BookingProvider.BeforePaymentProcessing(UrlLanguage.CurrentLanguage, payment.paymentparam); if (result == null) { throw new Exception("cannot get payment details"); } if (!result.success) { throw new Exception("payment details fail"); } try { List <ReportParam> list = new List <ReportParam>(); ReportParam item = new ReportParam { Name = "vClaimList", Value = claim.ToString() }; list.Add(item); string str = ConfigurationManager.AppSettings["report_PrintInvoice"]; if (string.IsNullOrEmpty(str)) { throw new Exception("report_PrintInvoice is empty"); } ReportResult result2 = ReportServer.BuildReport(str, ReportFormat.pdf, list.ToArray()); if (result2 == null) { throw new Exception("report data is empty"); } MemoryStream fileStream = new MemoryStream(result2.Content); FileStreamResult result3 = new FileStreamResult(fileStream, "application/pdf") { FileDownloadName = string.Format("invoice_{0}.pdf", claim) }; result4 = result3; } catch (Exception exception) { Tracing.ServiceTrace.TraceEvent(TraceEventType.Error, 0, exception.ToString()); throw; } return(result4); }
public ReservationState Calculate([FromUri] BookingCartParam param, [FromBody] BookingClaim claim) { if (param == null) { throw new ArgumentNullException("param"); } if (claim == null) { throw new ArgumentNullException("claim"); } WebPartner partner = UserToolsProvider.GetPartner(param); return(BookingProvider.DoCalculation(param.Language, partner.id, claim)); }
public ActionResult Summary([Bind(Prefix = "OrderFindForm")] OrderModel model) { SummaryContext context = new SummaryContext { ShowOrderFindForm = true }; if (base.ModelState.IsValid) { DateTime? currentDate = model.CurrentDate; DateTime dateFrom = currentDate.HasValue ? currentDate.GetValueOrDefault() : DateTime.Now.Date; List <GuestClaim> claims = GuestProvider.FindGuestClaims(UrlLanguage.CurrentLanguage, 0, model.ClaimName, new int?(Convert.ToInt32(model.Claim)), null); if ((claims != null) && (claims.Count > 0)) { int?nullable2; ReservationState reservationState = BookingProvider.GetReservationState(UrlLanguage.CurrentLanguage, claims[0].claim); if ((reservationState != null) && (nullable2 = reservationState.claimId).HasValue) { context.Claim = reservationState; context.ShowOrderFindForm = false; context.Hotels = new List <DepartureHotel>(); foreach (GuestClaim claim in claims) { nullable2 = null; context.Hotels.AddRange(GuestProvider.GetDepartureInfo(UrlLanguage.CurrentLanguage, dateFrom, dateFrom.AddDays(1.0), nullable2, new int?(claim.claim))); } context.GuideDurties = new List <HotelGuideResult>(); List <GuestOrder> list2 = GuestProvider.GetActiveHotelOrders(claims, dateFrom, dateFrom.AddDays(1.0)); if ((list2 != null) && (list2.Count > 0)) { GuideController controller = new GuideController(); foreach (GuestOrder order in list2) { HotelGuideParam param = new HotelGuideParam { h = order.hotelid, ln = UrlLanguage.CurrentLanguage, pb = new DateTime?(order.period.begin.Value), pe = new DateTime?(order.period.end.Value) }; HotelGuideResult item = controller.HotelGuide(param); context.GuideDurties.Add(item); } } } } } context.OrderFindNotFound = context.Claim == null; return(base.View(context)); }
public CheckPromoCodeResult CheckPromoCode([FromUri] BookingCartParam param, [FromBody] BookingClaim claim, [FromUri] string promocode) { if (param == null) { throw new ArgumentNullException("param"); } if (claim == null) { throw new ArgumentNullException("claim"); } if (string.IsNullOrEmpty(promocode)) { throw new ArgumentNullException("promocode"); } WebPartner partner = UserToolsProvider.GetPartner(param); return(BookingProvider.CheckExcursionPromoCode(param.Language, partner.id, claim, promocode)); }
public ActionResult Index(PaymentModel model) { if (model == null) { throw new ArgumentNullException("model"); } if (model.claimId == 0) { throw new ArgumentException("claimid"); } PaymentContext context = new PaymentContext { Reservation = BookingProvider.GetReservationState(UrlLanguage.CurrentLanguage, model.claimId), PaymentModes = BookingProvider.GetPaymentModes(UrlLanguage.CurrentLanguage, model.claimId) }; return(base.View(context)); }
public ReservationState State(int?id, [FromUri] StatusParams param) { Func <GuestClaim, bool> func = null; if (!id.HasValue) { throw new ArgumentNullExceptionWithCode(110, "id"); } if (param == null) { throw new ArgumentNullException("param"); } WebPartner partner = UserToolsProvider.GetPartner(param); ReservationState result = BookingProvider.GetReservationState(param.Language, id.Value); ReservationState result2; if (result != null && result.claimId.HasValue) { if (param.PartnerSessionID != null && result.partner != null && result.partner.id == partner.id) { result2 = result; return(result2); } if (WebSecurity.CurrentUserId > 0) { System.Collections.Generic.List <GuestClaim> claims = GuestProvider.GetLinkedClaims(param.Language, WebSecurity.CurrentUserId); bool arg_10E_0; if (claims != null) { arg_10E_0 = (claims.FirstOrDefault((GuestClaim m) => m.claim == result.claimId.Value) == null); } else { arg_10E_0 = true; } if (!arg_10E_0) { result2 = result; return(result2); } } } return(null); }
public void Then_IsCorporateFailWithWebAgent() { mockFactory.ClearExpectations(); bool expected = false; string salesAgent = "web"; int amountOfBooking = 1; var booking = BookingProvider.GetBookings(salesAgent, amountOfBooking).First(); _XXXLibraryConfigurationMock.Expects.One.GetProperty <string>(x => x.PartialCodeForCorporateAgent).WillReturn("corp"); bool actual = Sut.IsCorporate(booking); Assert.IsTrue(actual == expected, "Expected to fail IsCorporate feature."); mockFactory.VerifyAllExpectationsHaveBeenMet(); }
public void Then_IsAgencyPassWithAgencyAgent() { mockFactory.ClearExpectations(); bool expected = true; string salesAgent = "Agency"; int amountOfBooking = 1; var booking = BookingProvider.GetBookings(salesAgent, amountOfBooking).First(); _XXXLibraryConfigurationMock.Expects.One.GetProperty <string>(x => x.PartialCodeForAgencyAgent).WillReturn("agency"); bool actual = Sut.IsAgency(booking); Assert.IsTrue(actual == expected, "Expected to pass IsAgency feature."); mockFactory.VerifyAllExpectationsHaveBeenMet(); }
private ActionResult ProcessingPrivate(ProcessingModel model) { if (model == null) { throw new System.ArgumentNullException("model"); } if (model.claimId == 0) { throw new System.ArgumentException("claimid"); } PaymentMode paymentMode = ( from m in BookingProvider.GetPaymentModes(UrlLanguage.CurrentLanguage, model.claimId) where m.id == model.paymentId select m).FirstOrDefault <PaymentMode>(); if (paymentMode == null) { throw new System.Exception(string.Format("payment mode id '{0}' not found", model.paymentId)); } string text = (paymentMode.processing ?? "").ToLowerInvariant(); if (text != null) { switch (text) { case "paypal": return(this.Processing_PayPal(model.claimId, paymentMode)); case "uniteller": return(this.Processing_Uniteller(model.claimId, paymentMode)); case "payu": return(this.Processing_PayU(model.claimId, paymentMode)); case "cash": return(new RedirectResult(base.Url.Action("howtopay", "info"))); default: break; } } throw new System.Exception(string.Format("unsupported processing system '{0}'", paymentMode.processing)); }
public ActionResult Order(int?id) { OrderContext model = new OrderContext(); int currentUserId = WebSecurity.CurrentUserId; List <GuestClaim> linkedClaims = GuestProvider.GetLinkedClaims(UrlLanguage.CurrentLanguage, currentUserId); int? detailedId = null; if (id.HasValue) { if (linkedClaims.FirstOrDefault((GuestClaim m) => m.claim == id.Value) != null) { detailedId = new int?(id.Value); } } if (!(detailedId.HasValue || (linkedClaims.Count <= 0))) { detailedId = new int?(linkedClaims[0].claim); } if (detailedId.HasValue) { ReservationState reservationState = BookingProvider.GetReservationState(UrlLanguage.CurrentLanguage, detailedId.Value); if ((reservationState != null) && reservationState.claimId.HasValue) { model.Claim = reservationState; model.ExcursionTransfers = GuestProvider.GetExcursionTransferByClaim(UrlLanguage.CurrentLanguage, reservationState.claimId.Value); } } model.ClaimsNotFound = linkedClaims.Count == 0; model.ShowOtherClaims = true; model.OtherClaims = ( from m in linkedClaims //удалить детальн // where m.claim != detailedId select m).ToList <GuestClaim>(); // model.OtherClaims = linkedClaims.Where<GuestClaim>(new Func<GuestClaim, bool>(class2, (IntPtr) this.<Order>b__2)).ToList<GuestClaim>(); return(base.View(model)); }
public void Then_BookingIsNotCanceledWhenAgency() { mockFactory.ClearExpectations(); string salesAgent = "agency"; int amountOfBooking = 1; var bookingsToCancel = BookingProvider.GetBookings(salesAgent, amountOfBooking); var firstModificationDate = bookingsToCancel.SingleOrDefault().Modified; var journeysAmountToCancel = bookingsToCancel.SingleOrDefault().Journeys.Count; _BookingRepository.Expects.One.Method(x => x.Get(null, null, null, null, null, false)).WithAnyArguments().WillReturn(bookingsToCancel); _JourneyRepository.Expects.Exactly(journeysAmountToCancel).Method(x => x.Delete(null)).WithAnyArguments(); _BookingRepository.Expects.One.Method(x => x.UpdateRootEntity(null)).WithAnyArguments(); _UnitOfWorkBookingCanceler.Expects.One.Method(x => x.Save()).WillReturn(journeysAmountToCancel); _BookingFeaturesDomainServices.Expects.One.Method(x => x.IsAgency(null)).WithAnyArguments().WillReturn(true); Sut.CancelBooking(bookingsToCancel.First().Id); }
public void Then_IsEnabledToAddNewJourneysFailWithMoreThanJourneysAllowed() { mockFactory.ClearExpectations(); bool expected = false; string salesAgent = "Corporate"; int amountOfBooking = 1; var booking = BookingProvider.GetBookings(salesAgent, amountOfBooking).First(); var maxJourneysAllowedByBooking = booking.Journeys.Count - 1; _XXXLibraryConfigurationMock.Expects.One.GetProperty <int>(x => x.MaxJourneysAllowedByBooking).WillReturn(maxJourneysAllowedByBooking); bool actual = Sut.IsEnabledToAddNewJourneys(booking); Assert.IsTrue(actual == expected, "Expected to fail IsEnabledToAddNewJourneys feature."); mockFactory.VerifyAllExpectationsHaveBeenMet(); }
public ActionResult Order([Bind(Prefix = "OrderFindForm")] OrderModel model) { OrderContext context = new OrderContext { ShowOrderFindForm = true }; if (base.ModelState.IsValid) { List <GuestClaim> list = GuestProvider.FindGuestClaims(UrlLanguage.CurrentLanguage, 0, model.ClaimName, new int?(Convert.ToInt32(model.Claim)), null); if ((list != null) && (list.Count > 0)) { ReservationState reservationState = BookingProvider.GetReservationState(UrlLanguage.CurrentLanguage, list[0].claim); if ((reservationState != null) && reservationState.claimId.HasValue) { context.Claim = reservationState; context.ExcursionTransfers = GuestProvider.GetExcursionTransferByClaim(UrlLanguage.CurrentLanguage, reservationState.claimId.Value); context.ShowOrderFindForm = false; } } } context.OrderFindNotFound = context.Claim == null; return(base.View(context)); }
private ActionResult Processing_PayU(int claim, PaymentMode payment) { if (payment == null) { throw new System.ArgumentNullException("payment"); } PaymentBeforeProcessingResult beforePaymentResult = BookingProvider.BeforePaymentProcessing(UrlLanguage.CurrentLanguage, payment.paymentparam); if (beforePaymentResult == null) { throw new System.Exception("cannot get payment details"); } if (!beforePaymentResult.success) { throw new System.Exception("payment details fail"); } return(base.View("PaymentSystems\\PayU", new ProcessingContext { Reservation = BookingProvider.GetReservationState(UrlLanguage.CurrentLanguage, claim), PaymentMode = payment, BeforePaymentResult = beforePaymentResult })); }
public BookingProviderTests() { _mockBookingServiceGateway.Setup(_ => _.NextAvailability(It.IsAny <AvailabilityRequest>())) .ReturnsAsync(new HttpResponse <AvailabilityDayResponse> { StatusCode = System.Net.HttpStatusCode.OK, IsSuccessStatusCode = true, ResponseContent = new AvailabilityDayResponse() }); _mockBookingServiceGateway.Setup(_ => _.GetAvailability(It.IsAny <AvailabilityRequest>())) .ReturnsAsync(new HttpResponse <List <AvailabilityDayResponse> > { StatusCode = System.Net.HttpStatusCode.OK, IsSuccessStatusCode = true, ResponseContent = new List <AvailabilityDayResponse>() }); _mockBookingServiceGateway.Setup(_ => _.Reserve(It.IsAny <BookingRequest>())) .ReturnsAsync(new HttpResponse <Guid> { StatusCode = System.Net.HttpStatusCode.OK, IsSuccessStatusCode = true, ResponseContent = Guid.Empty }); _mockBookingServiceGateway.Setup(_ => _.GetLocation(It.IsAny <LocationRequest>())) .ReturnsAsync(new HttpResponse <string> { StatusCode = System.Net.HttpStatusCode.OK, IsSuccessStatusCode = true, ResponseContent = String.Empty }); _bookigProvider = new BookingProvider(_mockBookingServiceGateway.Object); }
private ActionResult ProcessingResult_PayU(ProcessingResultModel model) { if (model == null) { throw new System.ArgumentNullException("model"); } PaymentResultContext context = new PaymentResultContext(); if (model.success == true) { context.Success = true; context.Order = model.order; ConfirmInvoiceResult invoiceResult = BookingProvider.ConfirmInvoice(model.invoice); Tracing.DataTrace.TraceEvent(TraceEventType.Information, 0, "PAYU transaction: invoice: '{0}', invoice confirmation: '{1}'", new object[] { model.invoice, invoiceResult.IsSuccess ? "SUCCESS" : "FAILED" }); if (!invoiceResult.IsSuccess) { context.Errors.Add(string.Format("invoice confirmation error: {0}", invoiceResult.ErrorMessage)); } else { context.Success = true; BookingProvider.AcceptInvoice(Convert.ToInt32(context.Order)); } } else { context.Errors.Add(PaymentStrings.PaymentCancelled); } return(base.View("_ProcessingResult", context)); }
private ActionResult Processing_Uniteller(int claim, PaymentMode payment) { if (payment == null) { throw new ArgumentNullException("payment"); } PaymentBeforeProcessingResult result = BookingProvider.BeforePaymentProcessing(UrlLanguage.CurrentLanguage, payment.paymentparam); if (result == null) { throw new Exception("cannot get payment details"); } if (!result.success) { throw new Exception("payment details fail"); } ProcessingContext model = new ProcessingContext { Reservation = BookingProvider.GetReservationState(UrlLanguage.CurrentLanguage, claim), PaymentMode = payment, BeforePaymentResult = result }; return(base.View(@"PaymentSystems\Uniteller", model)); }
public BookingService(BookingProvider bookingProvider) { _bookingProvider = bookingProvider; }
public ActionResult Index(int?claim) { ReservationState state = null; if (claim.HasValue) { state = BookingProvider.GetReservationState(UrlLanguage.CurrentLanguage, claim.Value); } #region ПРОВЕРКА ПРАВ ПОЛЬЗОВАТЕЛЯ НА ПРОСМОТР ЗАКАЗА //если есть в параметрах телефон, проверяем его if (!string.IsNullOrEmpty(Request.Params["phone"])) { try { //проверяем правильность телефона, добавляем в список разрешенных if (ClearPhoneFromGarbege(Request.Params["phone"]) == ClearPhoneFromGarbege(state.customer.phone)) { if (System.Web.HttpContext.Current.Session["allowed_claims"] == null) { System.Web.HttpContext.Current.Session["allowed_claims"] = new List <int>(); } (System.Web.HttpContext.Current.Session["allowed_claims"] as List <int>).Add(claim.Value); } else { state = BookingProvider.GetReservationState(UrlLanguage.CurrentLanguage, 0); } } catch (Exception) { state = BookingProvider.GetReservationState(UrlLanguage.CurrentLanguage, 0); } } else //если нет, проверяем есть ли в сессии разрешение на заявку { try { if ((claim.HasValue) && ((System.Web.HttpContext.Current.Session["allowed_claims"] == null) || (!(System.Web.HttpContext.Current.Session["allowed_claims"] as List <int>).Contains(claim.Value)))) { state = BookingProvider.GetReservationState(UrlLanguage.CurrentLanguage, 0); } } catch (NullReferenceException) { state = BookingProvider.GetReservationState(UrlLanguage.CurrentLanguage, 0); } } #endregion PaymentContext context = new PaymentContext(); if (claim.HasValue) { context.Reservation = state; context.PaymentModes = BookingProvider.GetPaymentModes(UrlLanguage.CurrentLanguage, claim.Value); } if (!string.IsNullOrEmpty(Request.Params["paymentMethod"])) { return(ProcessingPrivate(new ProcessingModel() { claimId = claim.Value, paymentId = Request.Params["paymentMethod"] })); } return(base.View(context)); }
private ActionResult ProcessingResult_PayPal(ProcessingResultModel model) { if (model == null) { throw new System.ArgumentNullException("model"); } PaymentResultContext context = new PaymentResultContext(); context.Order = model.order; if (model.success == true) { if (model.token == null) { throw new System.ArgumentNullException("token"); } if (model.payerID == null) { throw new System.ArgumentNullException("payerID"); } GetExpressCheckoutDetailsRequestType request = new GetExpressCheckoutDetailsRequestType(); request.Version = "104.0"; request.Token = model.token; GetExpressCheckoutDetailsReq wrapper = new GetExpressCheckoutDetailsReq(); wrapper.GetExpressCheckoutDetailsRequest = request; System.Collections.Generic.Dictionary <string, string> config = PaymentController.PayPal_CreateConfig(); PayPalAPIInterfaceServiceService service = new PayPalAPIInterfaceServiceService(config); GetExpressCheckoutDetailsResponseType ecResponse = service.GetExpressCheckoutDetails(wrapper); if (ecResponse == null) { throw new System.Exception("checkout details result is null"); } if (ecResponse.Errors != null && ecResponse.Errors.Count > 0) { ecResponse.Errors.ForEach(delegate(ErrorType m) { context.Errors.Add(m.LongMessage); }); } if (ecResponse.Ack == AckCodeType.SUCCESS || ecResponse.Ack == AckCodeType.SUCCESSWITHWARNING) { GetExpressCheckoutDetailsResponseDetailsType details = ecResponse.GetExpressCheckoutDetailsResponseDetails; if (details == null) { throw new System.Exception("details object is null"); } if (string.IsNullOrEmpty(details.InvoiceID)) { throw new System.Exception("invoiceID not found"); } if (details.PaymentDetails == null) { throw new System.Exception("payment details is null"); } System.Collections.Generic.List <PaymentDetailsType> paymentDetails = new System.Collections.Generic.List <PaymentDetailsType>(); foreach (PaymentDetailsType payment in details.PaymentDetails) { paymentDetails.Add(new PaymentDetailsType { NotifyURL = null, PaymentAction = payment.PaymentAction, OrderTotal = payment.OrderTotal }); } DoExpressCheckoutPaymentRequestType paymentRequest = new DoExpressCheckoutPaymentRequestType(); paymentRequest.Version = "104.0"; paymentRequest.DoExpressCheckoutPaymentRequestDetails = new DoExpressCheckoutPaymentRequestDetailsType { PaymentDetails = paymentDetails, Token = model.token, PayerID = model.payerID }; DoExpressCheckoutPaymentResponseType doECResponse = service.DoExpressCheckoutPayment(new DoExpressCheckoutPaymentReq { DoExpressCheckoutPaymentRequest = paymentRequest }); if (doECResponse == null) { throw new System.Exception("payment result is null"); } if (doECResponse.Errors != null && doECResponse.Errors.Count > 0) { doECResponse.Errors.ForEach(delegate(ErrorType m) { context.Errors.Add(m.LongMessage); }); } if (doECResponse.Ack == AckCodeType.SUCCESS || doECResponse.Ack == AckCodeType.SUCCESSWITHWARNING) { ConfirmInvoiceResult invoiceResult = BookingProvider.ConfirmInvoice(details.InvoiceID.Trim()); Tracing.DataTrace.TraceEvent(TraceEventType.Information, 0, "PAYPAL transaction: invoice: '{0}', invoice confirmation: '{1}'", new object[] { details.InvoiceID, invoiceResult.IsSuccess ? "SUCCESS" : "FAILED" }); if (!invoiceResult.IsSuccess) { context.Errors.Add(string.Format("invoice confirmation error: {0}", invoiceResult.ErrorMessage)); } else { context.Success = true; BookingProvider.AcceptInvoice(Convert.ToInt32(context.Order)); } } } } else { context.Errors.Add(PaymentStrings.PaymentCancelled); } return(base.View("_ProcessingResult", context)); }
private ActionResult Processing_PayPal(int claim, PaymentMode payment) { if (payment == null) { throw new System.ArgumentNullException("payment"); } PaymentBeforeProcessingResult beforePaymentResult = BookingProvider.BeforePaymentProcessing(UrlLanguage.CurrentLanguage, payment.paymentparam); if (beforePaymentResult == null) { throw new System.Exception("cannot get payment details"); } if (!beforePaymentResult.success) { throw new System.Exception("payment details fail"); } System.Collections.Generic.List <PaymentDetailsType> paymentDetails = new System.Collections.Generic.List <PaymentDetailsType>(); PaymentDetailsType paymentDetail = new PaymentDetailsType(); paymentDetail.AllowedPaymentMethod = new AllowedPaymentMethodType?(AllowedPaymentMethodType.ANYFUNDINGSOURCE); CurrencyCodeType currency = (CurrencyCodeType)EnumUtils.GetValue(payment.payrest.currency, typeof(CurrencyCodeType)); PaymentDetailsItemType paymentItem = new PaymentDetailsItemType(); paymentItem.Name = string.Format(PaymentStrings.ResourceManager.Get("PaymentForOrderFormat"), claim); paymentItem.Amount = new BasicAmountType(new CurrencyCodeType?(currency), payment.payrest.total.ToString("#.00", System.Globalization.NumberFormatInfo.InvariantInfo)); paymentItem.Quantity = new int?(1); paymentItem.ItemCategory = new ItemCategoryType?(ItemCategoryType.PHYSICAL); paymentItem.Description = string.Format("Booking #{0}", claim); paymentDetail.PaymentDetailsItem = new System.Collections.Generic.List <PaymentDetailsItemType> { paymentItem }; paymentDetail.PaymentAction = new PaymentActionCodeType?(PaymentActionCodeType.SALE); paymentDetail.OrderTotal = new BasicAmountType(paymentItem.Amount.currencyID, paymentItem.Amount.value); paymentDetails.Add(paymentDetail); SetExpressCheckoutRequestDetailsType ecDetails = new SetExpressCheckoutRequestDetailsType(); ecDetails.ReturnURL = new Uri(base.Request.BaseServerAddress(), base.Url.Action("processingresult", new { id = "paypal", success = true })).ToString(); ecDetails.CancelURL = new Uri(base.Request.BaseServerAddress(), base.Url.Action("processingresult", new { id = "paypal", success = false })).ToString(); ecDetails.NoShipping = "1"; ecDetails.AllowNote = "0"; ecDetails.SolutionType = new SolutionTypeType?(SolutionTypeType.SOLE); ecDetails.SurveyEnable = "0"; ecDetails.PaymentDetails = paymentDetails; ecDetails.InvoiceID = beforePaymentResult.invoiceNumber; SetExpressCheckoutRequestType request = new SetExpressCheckoutRequestType(); request.Version = "104.0"; request.SetExpressCheckoutRequestDetails = ecDetails; SetExpressCheckoutReq wrapper = new SetExpressCheckoutReq(); wrapper.SetExpressCheckoutRequest = request; System.Collections.Generic.Dictionary <string, string> config = PaymentController.PayPal_CreateConfig(); PayPalAPIInterfaceServiceService service = new PayPalAPIInterfaceServiceService(config); SetExpressCheckoutResponseType setECResponse = service.SetExpressCheckout(wrapper); System.Collections.Generic.KeyValuePair <string, string> sandboxConfig = config.FirstOrDefault((System.Collections.Generic.KeyValuePair <string, string> m) => m.Key == "mode"); string sandboxServer = (sandboxConfig.Key != null && sandboxConfig.Value == "sandbox") ? ".sandbox" : ""; return(base.View("PaymentSystems\\PayPal", new ProcessingContext { Reservation = BookingProvider.GetReservationState(UrlLanguage.CurrentLanguage, claim), PaymentMode = payment, BeforePaymentResult = beforePaymentResult, RedirectUrl = string.Format("https://www{0}.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token={1}", sandboxServer, base.Server.UrlEncode(setECResponse.Token)) })); // return new RedirectResult(string.Format("https://www{0}.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token={1}", sandboxServer, base.Server.UrlEncode(setECResponse.Token))); }
public async Task<IDictionary<string, object>> BuildStatusCalendarContent(DateTime startDate, DateTime endDate) { SearchBookingSummariesQuery query = new SearchBookingSummariesQuery { Start = startDate, End = endDate, BookingState = new BookingDataModel.BookingStateType[] { BookingDataModel.BookingStateType.Requested, BookingDataModel.BookingStateType.Approved } }; var bookings = await BookingProvider.FindBookingsInInterval(query); var expandedBookingDays = bookings.SelectMany(b => b.ExpandDays()).ToDictionary( b => b.Date.ToString("yyyy-MM-dd"), b => b.Booking); List<Dictionary<string, object>> dates = new List<Dictionary<string, object>>(); var today = DateTime.Now.ToString("yyyy-MM-dd"); for (DateTime day = startDate; day < endDate; day = day.AddDays(1)) { string dayString = day.ToString("yyyy-MM-dd"); Dictionary<string, object> dayData = new Dictionary<string, object>(); dayData["date"] = day; dayData["dateString"] = dayString; string rowColor = "transparent"; string dateColor = "transparent"; if (today == dayString) { rowColor = "#90EE90"; } else if (day.DayOfWeek == DayOfWeek.Saturday) { dateColor = "#D3D3D3"; } if (day.DayOfWeek == DayOfWeek.Sunday) { rowColor = "#D3D3D3"; } dayData["rowColor"] = rowColor; dayData["dateColor"] = dateColor; if (expandedBookingDays.TryGetValue(dayString, out BookingSummary booking)) { dayData["bookingNumber"] = booking.BookingNumber; dayData["bookingAlert"] = booking.AlertMessage; dayData["bookingPurpose"] = booking.Purpose; dayData["bookingContactName"] = booking.ContactName; } dates.Add(dayData); } await LoadElectricityTimeSeries(startDate, endDate, dates); Dictionary<string, object> result = new Dictionary<string, object>(); result["dates"] = dates; return result; }
public BookingController(BookingContext context) { _provider = new BookingProvider(context); }
public ActionResult Index(BookingCartWebParam param) { Action <BookingOrder> action = null; Action <BookingOrder> action2 = null; BookingContext context = new BookingContext(); CompleteOperation operation = CompleteOperation.CreateFromSession(base.Session); if (operation.IsProgress) { context.BookingOperationId = operation.OperationId; return(base.View("_BookingProcessing", context)); } if (operation.HasResult) { BookingCartResult result = JsonConvert.DeserializeObject <BookingCartResult>(operation.OperationResultData); if (result != null) { context.Prepare(result.Form, result.Reservation); } operation.Clear(); return(base.View(context)); } using (ShoppingCart cart = ShoppingCart.CreateFromSession(base.Session)) { if (param != null) { if (param.PartnerSessionID != null) { cart.PartnerSessionID = param.PartnerSessionID; } if (param.PartnerAlias != null) { cart.PartnerAlias = param.PartnerAlias; } } context.Form = new BookingModel(); context.Form.PartnerAlias = cart.PartnerAlias; context.Form.PartnerSessionID = cart.PartnerSessionID; if (WebSecurity.IsAuthenticated) { context.Form.CustomerEmail = WebSecurity.CurrentUserName; } if (cart.Orders != null) { if (action == null) { action = delegate(BookingOrder o) { if (((o != null) && (o.excursion != null)) && (o.excursion.contact != null)) { if (!((context.Form.CustomerName != null) || string.IsNullOrEmpty(o.excursion.contact.name))) { context.Form.CustomerName = o.excursion.contact.name; } if (!((context.Form.CustomerMobile != null) || string.IsNullOrEmpty(o.excursion.contact.mobile))) { context.Form.CustomerMobile = o.excursion.contact.mobile; } } }; } cart.Orders.ForEach(action); } if (cart.Orders != null) { if (action2 == null) { action2 = delegate(BookingOrder m) { BookingOrderModel item = new BookingOrderModel { BookingOrder = m }; context.Form.Orders.Add(item); }; } cart.Orders.ForEach(action2); } } context.Form.Action = "calculate"; context.PaymentModes = BookingProvider.GetPaymentModes(UrlLanguage.CurrentLanguage, 2025654180); return(this.Index(context.Form)); }
public ActionResult Index([Bind(Prefix = "Form")] BookingModel form) { Predicate <BookingOrderModel> match = null; Predicate <BookingOrder> predicate2 = null; Action <BookingOrderModel> action2 = null; if (form == null) { throw new ArgumentNullException("form"); } if (form.Action == "remove") { base.ModelState.Clear(); if ((form.RemoveOrderId != null) && (form.Orders != null)) { if (match == null) { match = m => ((m != null) && (m.BookingOrder != null)) && (m.BookingOrder.orderid == form.RemoveOrderId); } form.Orders.RemoveAll(match); using (ShoppingCart cart = ShoppingCart.CreateFromSession(base.Session)) { if ((cart != null) && (cart.Orders != null)) { if (predicate2 == null) { predicate2 = m => m.orderid == form.RemoveOrderId; } cart.Orders.RemoveAll(predicate2); } } } } BookingContext model = new BookingContext(); model.PaymentModes = BookingProvider.GetPaymentModes(UrlLanguage.CurrentLanguage, 2025654180); BookingClaim bookingClaim = new BookingClaim { orders = new List <BookingOrder>() }; if (form.Orders != null) { if (action2 == null) { action2 = delegate(BookingOrderModel m) { if ((m != null) && (m.BookingOrder != null)) { bookingClaim.orders.Add(m.BookingOrder); } }; } form.Orders.ForEach(action2); } BookingCartParam bookingCartParam = new BookingCartParam { ln = UrlLanguage.CurrentLanguage, pa = form.PartnerAlias, psid = form.PartnerSessionID }; GuestService.Controllers.Api.BookingController controller = new GuestService.Controllers.Api.BookingController(); bookingClaim.note = form.BookingNote; Customer customer = new Customer { name = form.CustomerName, mobile = form.CustomerMobile, email = form.CustomerEmail, address = form.CustomerAddress }; bookingClaim.customer = customer; if (form.PromoCodes != null) { bookingClaim.PromoCodes = new List <string>(form.PromoCodes); } if (form.Action == null) { if (!form.RulesAccepted) { base.ModelState.AddModelError("Form.RulesAccepted", BookingStrings.RulesAccepted); } if (base.ModelState.IsValid) { CompleteOperation operation = CompleteOperation.CreateFromSession(base.Session); operation.Start(); model.BookingOperationId = operation.OperationId; int?userId = WebSecurity.IsAuthenticated ? new int?(WebSecurity.CurrentUserId) : null; ThreadPool.QueueUserWorkItem(delegate(object o) { try { BookingCartResult result = new BookingCartResult { Form = form, Reservation = controller.Book(bookingCartParam, bookingClaim) }; if (((result.Reservation != null) && result.Reservation.claimId.HasValue) && userId.HasValue) { GuestProvider.LinkGuestClaim(userId.Value, result.Reservation.claimId.Value); } string data = JsonConvert.SerializeObject(result); CompleteOperationProvider.SetResult(operation.OperationId, "bookingresult", data); } catch (Exception exception) { Tracing.WebTrace.TraceEvent(TraceEventType.Error, 2, exception.ToString()); CompleteOperationProvider.SetResult(operation.OperationId, null, null); } }, null); model.Form = form; return(base.View("_BookingProcessing", model)); } } else if (form.Action == "promo") { base.ModelState.Clear(); List <string> list = (form.PromoCodes == null) ? new List <string>() : new List <string>(form.PromoCodes); if (!string.IsNullOrWhiteSpace(form.PromoCode)) { Action <BookingOrderModel> action = null; BookingClaim checkPromoClaim = new BookingClaim { orders = new List <BookingOrder>() }; if (form.Orders != null) { if (action == null) { action = delegate(BookingOrderModel m) { if ((m != null) && (m.BookingOrder != null)) { checkPromoClaim.orders.Add(m.BookingOrder); } }; } form.Orders.ForEach(action); } checkPromoClaim.PromoCodes = (form.PromoCodes != null) ? new List <string>(form.PromoCodes) : new List <string>(); CheckPromoCodeResult result = controller.CheckPromoCode(bookingCartParam, bookingClaim, form.PromoCode); if ((result != null) && (result.errorcode == 0)) { list.Add(form.PromoCode); bookingClaim.PromoCodes = list; form.PromoCodes = list.ToArray(); } else { base.ModelState.AddModelError("PromoCodeError", (result != null) ? result.errormessage : "невозможно применить промо код"); } } } ReservationState reservation = controller.Calculate(bookingCartParam, bookingClaim); model.Prepare(form, reservation); return(base.View(model)); }