public async Task <IActionResult> Edit(int id, [Bind("AsignacionHabitacionId,EmpleadoId,HabitacionId,RolId,Fecha")] AsignacionHabitacion asignacionHabitacion)
        {
            if (id != asignacionHabitacion.AsignacionHabitacionId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(asignacionHabitacion);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!AsignacionHabitacionExists(asignacionHabitacion.AsignacionHabitacionId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                alert("success", "Asignacion editada con exito", "Operacion exitosa");
                return(RedirectToAction(nameof(Index)));
            }
            SqlParameter[] parametros = new SqlParameter[]
            {
                new SqlParameter("@IdRol", (int)RolEnum.AgenteDeLimpieza)
            };
            var result = _context.Empleado.FromSql("EmpleadosPorRol @IdRol", parametros)
                         .Select(x => new { Texto = x.Nombres + " " + x.Apellidos, x.EmpleadoId });

            ViewData["EmpleadoId"]   = new SelectList(result, "EmpleadoId", "Texto", asignacionHabitacion.EmpleadoId);
            ViewData["HabitacionId"] = new SelectList(_context.Habitacion.Where(x => x.HabitacionId == asignacionHabitacion.HabitacionId), "HabitacionId", "Numero", asignacionHabitacion.HabitacionId);
            return(View(asignacionHabitacion));
        }
        public async Task <IActionResult> Create([Bind("AsignacionHabitacionId,EmpleadoId,HabitacionId,RolId,Fecha")] AsignacionHabitacion asignacionHabitacion)
        {
            if (ModelState.IsValid)
            {
                asignacionHabitacion.RolId = (int)RolEnum.AgenteDeLimpieza;
                _context.Add(asignacionHabitacion);
                await _context.SaveChangesAsync();

                alert("success", "Asignacion registrada con exito", "Operacion exitosa");
                return(RedirectToAction(nameof(Index)));
            }
            SqlParameter[] parametros = new SqlParameter[]
            {
                new SqlParameter("@IdRol", (int)RolEnum.AgenteDeLimpieza)
            };
            var result = _context.Empleado.FromSql("EmpleadosPorRol @IdRol", parametros)
                         .Select(x => new { Texto = x.Nombres + " " + x.Apellidos, x.EmpleadoId });

            ViewData["EmpleadoId"]   = new SelectList(result, "EmpleadoId", "Texto", asignacionHabitacion.EmpleadoId);
            ViewData["HabitacionId"] = new SelectList(_context.Habitacion, "HabitacionId", "Numero", asignacionHabitacion.HabitacionId);
            return(View(asignacionHabitacion));
        }
        public async Task <IActionResult> Edit(int id, [Bind("IncidenciaID,EmpleadoId,Habitacion,Prioridad,Descripcion,Encargado,Estado,FechaAbierto,FechaCerrado")] Incidencia incidencia)
        {
            if (id != incidencia.IncidenciaID)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    HoteleriaContext _context2 = new HoteleriaContext();
                    HoteleriaContext _context3 = new HoteleriaContext();
                    Incidencia       inc       = _context2.Incidencia.Find(incidencia.IncidenciaID);

                    if (incidencia.Encargado != null && incidencia.Estado == 0)
                    {
                        Empleado             emp = _context2.Empleado.Where(e => e.UsuarioNombre == incidencia.Encargado).First();
                        Habitacion           hab = _context2.Habitacion.Where(h => h.Numero == incidencia.Habitacion).First();
                        AsignacionHabitacion asignacionHabitacion = new AsignacionHabitacion
                        {
                            EmpleadoId   = emp.EmpleadoId,
                            HabitacionId = hab.HabitacionId,
                            RolId        = 4
                        };
                        if (inc.Encargado == null)
                        {
                            _context2.Add(asignacionHabitacion);
                        }
                        else
                        {
                            _context2.Update(asignacionHabitacion);
                        }
                        new NotificacionService().Notificar(emp, hab, ActividadTipo.Mantenimiento);
                    }
                    if (incidencia.Estado == 0)
                    {
                        incidencia.FechaCerrado = null;
                        var habitacion = _context3.Habitacion.Where(a => a.Numero == incidencia.Habitacion).First();
                        if (habitacion.EstadoHabitacionId != 7)
                        {
                            habitacion.EstadoHabitacionId = 7;
                            _context3.Update(habitacion);
                        }
                    }
                    else if (incidencia.Estado == 1)
                    {
                        incidencia.FechaCerrado = DateTime.Now;
                        var habitacion = _context3.Habitacion.Where(a => a.Numero == incidencia.Habitacion).First();
                        var limpiezaid = _context3.AsignacionHabitacion.Where(a => a.HabitacionId == habitacion.HabitacionId && a.RolId == 3).First().EmpleadoId;
                        var emplimp    = _context3.Empleado.Find(limpiezaid);
                        habitacion.EstadoHabitacionId = 3;
                        _context3.Update(habitacion);
                        new NotificacionService().Notificar(emplimp, habitacion, ActividadTipo.Limpieza);
                        var emp = _context2.Empleado.Where(e => e.UsuarioNombre == incidencia.Encargado).First();
                        var asignacionHabitacion = _context2.AsignacionHabitacion.Where(a => a.EmpleadoId == emp.EmpleadoId && a.HabitacionId == habitacion.HabitacionId).First();
                        _context2.Remove(asignacionHabitacion);
                    }
                    _context.Update(incidencia);
                    await _context.SaveChangesAsync();

                    await _context2.SaveChangesAsync();

                    await _context3.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!IncidenciaExists(incidencia.IncidenciaID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                alert("success", "Incidencia editada con exito", "Operacion exitosa");
                return(RedirectToAction(nameof(Index)));
            }
            var estados = new SelectList(
                new List <SelectListItem>
            {
                new SelectListItem {
                    Text = "1", Value = "Resuelto"
                },
                new SelectListItem {
                    Text = "0", Value = "Pendiente"
                }
            }, "Value", "Text");

            ViewData["Estado"] = new SelectList(estados, estados.DataTextField, estados.DataValueField);
            var encargados = _userManager.GetUsersInRoleAsync("Mantenimiento").Result;

            ViewData["Encargado"] = new SelectList(encargados);
            List <string> prioridad = new List <string>
            {
                "Alta",
                "Media",
                "Baja"
            };

            ViewData["Prioridad"] = new SelectList(prioridad);
            return(View(incidencia));
        }