public ActionResult Index(GuestWebParams param)
        {
            GuestContext model = new GuestContext();

            if (WebSecurity.IsAuthenticated)
            {
                DateTime firstDate = ((param != null) && param.TestDate.HasValue) ? param.TestDate.Value.Date : DateTime.Now.Date;
                model.GuideDurties = new List <HotelGuideResult>();
                List <GuestOrder> list = GuestProvider.GetActiveHotelOrders(UrlLanguage.CurrentLanguage, WebSecurity.CurrentUserId, firstDate, firstDate.AddDays(1.0));
                if ((list != null) && (list.Count > 0))
                {
                    GuideController controller = new GuideController();
                    foreach (GuestOrder order in list)
                    {
                        HotelGuideParam param2 = 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(param2);
                        model.GuideDurties.Add(item);
                    }
                }
            }
            else
            {
                model.ShowAuthenticationMessage = true;
            }
            return(base.View(model));
        }
        public ActionResult Departure(GuestWebParams param)
        {
            DepartureContext context;
            DateTime         date = ((param != null) && param.TestDate.HasValue) ? param.TestDate.Value.Date : DateTime.Now.Date;

            if (WebSecurity.IsAuthenticated)
            {
                context = new DepartureContext();
                List <GuestClaim> list = GuestProvider.GetActiveClaims(UrlLanguage.CurrentLanguage, WebSecurity.CurrentUserId, date);
                if ((list != null) && (list.Count > 0))
                {
                    context.Hotels = new List <DepartureHotel>();
                    foreach (GuestClaim claim in list)
                    {
                        int?hotel = null;
                        context.Hotels.AddRange(GuestProvider.GetDepartureInfo(UrlLanguage.CurrentLanguage, date, date.AddDays(1.0), hotel, new int?(claim.claim)));
                    }
                }
                return(base.View(context));
            }
            if (HttpPreferences.Current.LocationHotel != null)
            {
                context = new DepartureContext {
                    Hotel = CatalogProvider.GetHotelDescription(UrlLanguage.CurrentLanguage, HttpPreferences.Current.LocationHotel)
                };
                if (context.Hotel != null)
                {
                    context.Hotels = GuestProvider.GetDepartureInfo(UrlLanguage.CurrentLanguage, date, date.AddDays(1.0), new int?(context.Hotel.id), null);
                }
                return(base.View(context));
            }
            string str = base.Url.RouteUrl(base.Request.QueryStringAsRouteValues());

            return(base.RedirectToAction("login", "account", new { returnUrl = str }));
        }
        public ActionResult PrintOrder(int?id)
        {
            PrintOrderContext context = new PrintOrderContext();

            context.Form       = new PrintOrderModel();
            context.Form.Claim = (id.HasValue ? id.ToString() : "");
            ActionResult result;

            if (WebSecurity.IsAuthenticated)
            {
                int guestId = WebSecurity.CurrentUserId;
                System.Collections.Generic.List <GuestClaim> claims = GuestProvider.GetLinkedClaims(UrlLanguage.CurrentLanguage, guestId);
                int?detailedId = null;
                if (id.HasValue)
                {
                    if (claims.FirstOrDefault((GuestClaim m) => m.claim == id.Value) != null)
                    {
                        detailedId = new int?(id.Value);
                    }
                }
                if (detailedId.HasValue)
                {
                    result = this.BuildVoucher(detailedId.Value);
                    return(result);
                }
                context.NotFound = true;
            }
            result = base.View(context);
            return(result);
        }
        public ActionResult FindOrderPost(string id, [Bind(Prefix = "Form")] FindOrderModel form)
        {
            FindOrderContext context = new FindOrderContext();

            context.Form = form;
            if (form.RequestType != "claim")
            {
                this.ClearErrorState(base.ModelState["Form.Claim"]);
                this.ClearErrorState(base.ModelState["Form.ClaimName"]);
            }
            if (form.RequestType != "passport")
            {
                this.ClearErrorState(base.ModelState["Form.Passport"]);
                this.ClearErrorState(base.ModelState["Form.PassportName"]);
            }
            if (base.ModelState.IsValid)
            {
                int guestId = WebSecurity.CurrentUserId;
                if (form.RequestType == "claim")
                {
                    context.Claims = GuestProvider.FindGuestClaims(UrlLanguage.CurrentLanguage, guestId, form.ClaimName, new int?(System.Convert.ToInt32(form.Claim)), null);
                }
                else
                {
                    if (!(form.RequestType == "passport"))
                    {
                        throw new System.Exception("invalid RequestType");
                    }
                    context.Claims = GuestProvider.FindGuestClaims(UrlLanguage.CurrentLanguage, guestId, form.PassportName, null, form.Passport);
                }
                context.NotFound = (context.Claims.Count == 0);
            }
            return(base.View(context));
        }
 public ActionResult UnlinkOrder([Bind(Prefix = "Unlink")] UnlinkOrderModel model)
 {
     if ((model != null) && model.Claim.HasValue)
     {
         GuestProvider.UnlinkGuestClaim(WebSecurity.CurrentUserId, model.Claim.Value);
     }
     return(base.RedirectToAction("order"));
 }
        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 ActionResult PrintOrderPost([Bind(Prefix = "Form")] PrintOrderModel model)
        {
            PrintOrderContext context = new PrintOrderContext {
                Form = model
            };
            int result = 0;

            if (base.ModelState.IsValid && int.TryParse(model.Claim, out result))
            {
                List <GuestClaim> list = GuestProvider.FindGuestClaims(UrlLanguage.CurrentLanguage, 0, model.Name, new int?(result), null);
                if ((list != null) && (list.Count > 0))
                {
                    return(this.BuildVoucher(result));
                }
                context.NotFound = true;
            }
            return(base.View(context));
        }
예제 #8
0
        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 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 List <DepartureHotel> Departure([FromUri] DepartureParam param)
 {
     if (param == null)
     {
         throw new ArgumentNullException("param");
     }
     if (!param.FirstDate.HasValue)
     {
         throw new ArgumentNullException("fd");
     }
     if (!param.LastDate.HasValue)
     {
         throw new ArgumentNullException("ld");
     }
     if (!(param.Hotel.HasValue || param.Claim.HasValue))
     {
         throw new ArgumentException("'h' or 'c' should be specified");
     }
     return(GuestProvider.GetDepartureInfo(param.Language, param.FirstDate.Value, param.LastDate.Value, param.Hotel, param.Claim));
 }
        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));
        }
예제 #12
0
 public static void AddGuest()
 {
     GuestProvider.AddGuest();
 }
        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));
        }