public ActionResult RegistrarPer(ClientePersona ca, Reserva ra, Habitacion hh)
        {
            conectorDataContext db = new conectorDataContext();
            int b = db.Usuario.OrderByDescending(a => a.Id).First().Id;
            ca.IdUsuario = b;
            db.ClientePersona.InsertOnSubmit(ca);
            db.SubmitChanges();

            ra.IdUsuario = b;

            int d = db.Habitacion.OrderByDescending(a => a.Id).First().Id;
            ra.IdHabitacion = d;
            ra.CantDias = ra.Salida.Day - ra.LLegada.Day;
            ra.Fecha = DateTime.Now;
            db.Reserva.InsertOnSubmit(ra);
            db.SubmitChanges();

            if (hh.Id == ra.IdHabitacion && hh.Estado=="Libre")
            {
                hh.Estado = "Ocupado";
                db.Habitacion.InsertOnSubmit(hh);
                db.SubmitChanges();
            }
            return View();
        }
 public ActionResult Registrar(Reserva rr)
 {
     if (ModelState.IsValid)
     {
         conectorDataContext db = new conectorDataContext();
         rr.Fecha = DateTime.Now;
         db.Reserva.InsertOnSubmit(rr);
         db.SubmitChanges();
         return RedirectToAction("Exito", "Reserva");
     }
     else
     {
         return RedirectToAction("Fallo", "Reserva");
     }
 }
 /// <summary>
 /// Método desusado para agregar un nuevo objeto al EntitySet Reserva. Considere la posibilidad de usar el método .Add de la propiedad ObjectSet&lt;T&gt; asociada.
 /// </summary>
 public void AddToReserva(Reserva reserva)
 {
     base.AddObject("Reserva", reserva);
 }
 /// <summary>
 /// Crear un nuevo objeto Reserva.
 /// </summary>
 /// <param name="reservacionID">Valor inicial de la propiedad ReservacionID.</param>
 /// <param name="clienteID_">Valor inicial de la propiedad ClienteID_.</param>
 public static Reserva CreateReserva(global::System.Int32 reservacionID, global::System.Int32 clienteID_)
 {
     Reserva reserva = new Reserva();
     reserva.ReservacionID = reservacionID;
     reserva.ClienteID_ = clienteID_;
     return reserva;
 }
        public ActionResult Create(Reserva reserva)
        {
            if (ModelState.IsValid)
            {
                if (valid_Date(reserva.Fecha_ingreso, reserva.Fecha_egreso))
                {
                    int cont = new int();
                    cont = 0;
                    // busco las reservas de esa habitacion
                    var res = db.Reserva.Where(r => r.HabitacionID_ == reserva.HabitacionID_);
                    // valido q la habitacion este disponible
                    foreach (Reserva r in res)
                    {
                        // consulto si la habitacion no esta ocupada en esa fecha
                        if(!(reserva.Fecha_ingreso < r.Fecha_ingreso
                            && reserva.Fecha_egreso <= r.Fecha_ingreso
                            || reserva.Fecha_ingreso >= r.Fecha_egreso) )
                        {
                            // esta ocupada
                            cont++;
                        }
                    }
                    if (cont > 0)
                    {
                        var hbt = db.Habitacion.SingleOrDefault(h => h.HabitacionID == reserva.HabitacionID_);
                        ViewBag.no_disponible = "LA HABITACION " + hbt.Num_habitacion + " NO ESTA DISPONIBLE EN EL RANGO DE FECHAS SOLICITADO..! ";
                    }
                    else {
                        // entonces creo la reserva
                        reserva.IP_creacion = Request.ServerVariables["REMOTE_ADDR"];
                        TimeSpan? count_dias = (reserva.Fecha_egreso - reserva.Fecha_ingreso);

                        reserva.Cantidad_dias = count_dias.Value.Days;
                        //reserva.Fecha_entrega = DateTime.UtcNow.Date;
                        reserva.Fecha_devolucion = DateTime.UtcNow.Date;
                        if (reserva.Estado == "true")
                        {
                            //reserva.Hora_entrega = DateTime.UtcNow.TimeOfDay;//.UtcNow.ToShortTimeString();
                            // OJO si hora_devolucion es null (no se ha devuelto la Habitacion)
                            reserva.Hora_devolucion = null;
                        }
                        else
                        {
                            // OJO si hora_entrega y hora_devolucion es null (ni siquiera se ha entregado la Habitacion)
                            //reserva.Hora_entrega = null;
                            reserva.Hora_devolucion = null;
                        }
                        try
                        {
                            // guardo la reservacion
                            reserva.ClienteID_ = ClienteController.ID_Cliente;
                            //reserva.ClienteID = 1;
                            reserva.Fecha_creacion = DateTime.UtcNow.Date;
                            reserva.Fecha_ultima_modificacion = null;// DateTime.UtcNow.Date;
                            db.Reserva.AddObject(reserva);
                            db.SaveChanges();
                            return RedirectToAction("Index");
                        }
                        catch (Exception er)
                        {
                            ViewBag.error = er.ToString();
                        }
                    }
                }
                else { ViewBag.fecha_incorrecta = "La fecha de Ingreso es MENOR o Igual a la fecha de SALIDA, por favor rectifique..!"; }

                // valido las fechas

            }
            return View(reserva);
        }
        public ActionResult Edit(Reserva reserva)
        {
            if (ModelState.IsValid)
            {
                try {
                    TimeSpan? count_dias = reserva.Fecha_egreso - reserva.Fecha_ingreso;
                    reserva.IP_modificacion = Request.ServerVariables["REMOTE_ADDR"];
                    reserva.Fecha_ultima_modificacion = DateTime.UtcNow.Date;
                    //reserva.User_modificacion = HabitacionController.currentUser;
                    //db.Entry(reserva).State = EntityState.Modified;
                    db.Reserva.Attach(reserva);
                    db.ObjectStateManager.ChangeObjectState(reserva, EntityState.Modified);

                    //reserva.Fecha_entrega = DateTime.UtcNow.Date;
                    reserva.Fecha_devolucion = null;// DateTime.UtcNow.Date;
                    if (reserva.Estado == "true")
                    {
                        //reserva.Fecha_entrega = DateTime.UtcNow;
                        //reserva.Hora_entrega = DateTime.UtcNow.TimeOfDay;//.ToShortTimeString();
                        //reserva.Fecha_devolucion = DateTime.UtcNow;
                        // OJO si hora_devolucion es null (no se ha devuelto la Habitacion)
                        reserva.Hora_devolucion = null;
                    }
                    else
                    {
                        // OJO si hora_entrega y hora_devolucion es null (ni siquiera se ha entregado la Habitacion)
                        //reserva.Hora_entrega = null;
                        reserva.Hora_devolucion = null;
                    }
                    db.SaveChanges();
                    return RedirectToAction("Index");
                }catch(Exception er){
                    ViewBag.error = er.ToString();
                }
            }
            return View(reserva);
            //return RedirectToAction("Index");
        }
 partial void DeleteReserva(Reserva instance);
 partial void UpdateReserva(Reserva instance);
 partial void InsertReserva(Reserva instance);
		private void detach_Reserva(Reserva entity)
		{
			this.SendPropertyChanging();
			entity.Usuario = null;
		}
		private void attach_Reserva(Reserva entity)
		{
			this.SendPropertyChanging();
			entity.Usuario = this;
		}
		private void detach_Reserva(Reserva entity)
		{
			this.SendPropertyChanging();
			entity.Habitacion = null;
		}
		private void attach_Reserva(Reserva entity)
		{
			this.SendPropertyChanging();
			entity.Habitacion = this;
		}