Пример #1
0
 /// <summary>
 /// Create a new ReservationRoom object.
 /// </summary>
 /// <param name="id">Initial value of the Id property.</param>
 /// <param name="idRoomOcupation">Initial value of the IdRoomOcupation property.</param>
 /// <param name="idReservation">Initial value of the IdReservation property.</param>
 /// <param name="quantity">Initial value of the Quantity property.</param>
 public static ReservationRoom CreateReservationRoom(global::System.Int32 id, global::System.Int32 idRoomOcupation, global::System.Int32 idReservation, global::System.Int32 quantity)
 {
     ReservationRoom reservationRoom = new ReservationRoom();
     reservationRoom.Id = id;
     reservationRoom.IdRoomOcupation = idRoomOcupation;
     reservationRoom.IdReservation = idReservation;
     reservationRoom.Quantity = quantity;
     return reservationRoom;
 }
Пример #2
0
        public ActionResult Create(ReservationModel reservation)
        {
            ViewBag.Hotels = db.Hotel.OrderBy(u => u.Name);

            decimal __pricebase = new decimal();
            decimal __total = new decimal();
            decimal __totalrack = new decimal();

            var __rooms = reservation.Rooms.Where(z => z.Name != null);
            List<ReservationRoom> __listrr = new List<ReservationRoom>();
            foreach (var item in __rooms)
            {

                if (item.Name != null)
                {
                    var __room = db.Room.SingleOrDefault(u => u.Id.Equals(item.IdRoom));

                    IEnumerable<DateTime> __tripdays = EachDay(reservation.Trip.Arrival, reservation.Trip.Departure);
                    __tripdays = __tripdays.Take(__tripdays.Count() - 1);
                    reservation.Trip.Adults = reservation.Trip.Adults + (item.Adultos * item.Quantity);
                    reservation.Trip.Childrens = reservation.Trip.Childrens + (item.Infantes * item.Quantity);

                    foreach (var __day in __tripdays)
                    {
                        RoomOcupation __roomfare = null;
                        RoomOcupation __roomfarec = null;

                        __roomfarec = db.RoomOcupation.Where(u => u.DateStart <= __day && u.DateEnd >= __day && u.Active.Equals(true) && u.IdRoom.Equals(__room.Id) && u.Room.Name.Equals(item.Name) && u.Name.ToLower().Contains("niño")).FirstOrDefault();

                        __roomfare = db.RoomOcupation.Where(u => u.DateStart <= __day && u.DateEnd >= __day && u.Active.Equals(true) && u.IdRoom.Equals(__room.Id) && u.Room.Name.Equals(item.Name) && u.Name.Contains(item.IdOcup)).FirstOrDefault();

                        if (item.Adultos > 0)
                        {
                            if (__roomfare != null)
                            {

                                item.Quantity = item.Adultos;

                                decimal __discount = new decimal();

                                if (!reservation.Trip.Discount.HasValue)
                                    if (__tripdays.Count() <= 3)
                                        __discount = __roomfare.Discount1;
                                    else if (__tripdays.Count() >= 4 && __tripdays.Count() < 7)
                                        __discount = __roomfare.Discount2;
                                    else
                                        __discount = __roomfare.Discount3;
                                else
                                    if (reservation.Trip.Discount.Value != 0)
                                        __discount = reservation.Trip.Discount.Value;

                                decimal __admon = new decimal();

                                if (!reservation.Trip.PercentAdmin.HasValue)
                                    __admon = __roomfare.PercentAdmin;
                                else
                                    if (reservation.Trip.PercentAdmin.Value != 0)
                                        __admon = reservation.Trip.PercentAdmin.Value;

                                //descuento
                                decimal __facturabruta = __roomfare.PriceRack - (__roomfare.PriceRack * (__discount / 100));
                                //gastos admon
                                __facturabruta = __facturabruta + (__facturabruta * (__admon / 100));
                                //adultos
                                __facturabruta = (__facturabruta * item.Quantity) * 1;
                                //rack
                                __totalrack = ((__roomfare.PriceRack * item.Quantity) * 1) + __totalrack;

                                __total = __total + __facturabruta;

                                decimal __agent = new decimal();

                                if (!reservation.Trip.PercentAdmin.HasValue)
                                    __agent = __roomfare.PercentAgent;
                                else
                                    if (reservation.Trip.PercentAgent.Value != 0)
                                        __agent = reservation.Trip.PercentAgent.Value;

                                // Porcentaje del Vendedor
                                __pricebase = __pricebase + __roomfare.Price;
                                reservation.Trip.Discount = Convert.ToInt32(__discount);
                                reservation.Trip.PercentAdmin = Convert.ToInt32(__admon);
                                reservation.Trip.PercentAgent = Convert.ToInt32(__agent);
                                reservation.Trip.PriceBase = __pricebase;

                                ReservationRoom __rr = new ReservationRoom();
                                __rr.Quantity = item.Quantity;
                                __rr.RoomOcupation = __roomfare;
                                __rr.Adults = item.Adultos;
                                __rr.Childrens = item.Infantes;
                                reservation.Trip.ReservationRoom.Add(__rr);

                            }
                            else
                            {

                                ViewBag.Error = "No hay tarifas cargadas para la habitación " + __room.Name + " para la fecha seleccionada. (Adultos)";
                                return PartialView();
                            }
                        }
                        if (item.Infantes > 0)
                        {
                            if (__roomfarec != null)
                            {

                                item.Quantity = item.Infantes;

                                decimal __discount = new decimal();

                                if (!reservation.Trip.Discount.HasValue)
                                    if (__tripdays.Count() <= 3)
                                        __discount = __roomfarec.Discount1;
                                    else if (__tripdays.Count() >= 4 && __tripdays.Count() < 7)
                                        __discount = __roomfarec.Discount2;
                                    else
                                        __discount = __roomfarec.Discount3;
                                else
                                    if (reservation.Trip.Discount.Value != 0)
                                        __discount = reservation.Trip.Discount.Value;

                                decimal __admon = new decimal();

                                if (!reservation.Trip.PercentAdmin.HasValue)
                                    __admon = __roomfarec.PercentAdmin;
                                else
                                    if (reservation.Trip.PercentAdmin.Value != 0)
                                        __admon = reservation.Trip.PercentAdmin.Value;

                                //descuento
                                decimal __facturabruta = __roomfarec.PriceRack - (__roomfarec.PriceRack * (__discount / 100));
                                //gastos admon
                                __facturabruta = __facturabruta + (__facturabruta * (__admon / 100));
                                //adultos
                                __facturabruta = (__facturabruta * item.Quantity) * 1;
                                //rack
                                __totalrack = ((__roomfarec.PriceRack * item.Quantity) * 1) + __totalrack;

                                __total = __total + __facturabruta;

                                decimal __agent = new decimal();

                                if (!reservation.Trip.PercentAdmin.HasValue)
                                    __agent = __roomfarec.PercentAgent;
                                else
                                    if (reservation.Trip.PercentAgent.Value != 0)
                                        __agent = reservation.Trip.PercentAgent.Value;

                                // Porcentaje del Vendedor
                                __pricebase = __pricebase + __roomfarec.Price;
                                reservation.Trip.Discount = Convert.ToInt32(__discount);
                                reservation.Trip.PercentAdmin = Convert.ToInt32(__admon);
                                reservation.Trip.PercentAgent = Convert.ToInt32(__agent);
                                reservation.Trip.PriceBase = __pricebase;

                                ReservationRoom __rr = new ReservationRoom();
                                __rr.Quantity = item.Quantity;
                                __rr.RoomOcupation = __roomfarec;
                                __rr.Adults = 0;
                                __rr.Childrens = item.Infantes;
                                reservation.Trip.ReservationRoom.Add(__rr);

                            }
                            else
                            {

                                ViewBag.Error = "No hay tarifas cargadas para la habitación " + __room.Name + " para la fecha seleccionada. (Niños)";
                                return PartialView();
                            }
                        }
                    }

                }

            }

            if (__total > 0)
            {
                reservation.Trip.PriceRack = __totalrack;
                reservation.Trip.Price = __total;
                reservation.Trip.PriceBase = __pricebase;
                reservation.Trip.ReservationDate = DateTime.Now;

                db.Reservation.AddObject(reservation.Trip);
                db.SaveChanges();

                foreach (var item in __listrr)
                {
                    item.IdReservation = reservation.Trip.Id;
                    db.ReservationRoom.AddObject(item);
                    db.SaveChanges();
                }

                return RedirectToAction("Index");
            }
            else
            {
                ViewBag.Error = "No ha seleccionado ninguna habitación.";
                ViewBag.Customer = db.Customer.ToList();
                ViewBag.ReservationStatus = new SelectList(db.ReservationStatus, "Id", "Name");
                return View(reservation);
            }
        }
Пример #3
0
 /// <summary>
 /// Deprecated Method for adding a new object to the ReservationRoom EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
 /// </summary>
 public void AddToReservationRoom(ReservationRoom reservationRoom)
 {
     base.AddObject("ReservationRoom", reservationRoom);
 }