public async Task <ActionResult> Close(MCViewModel vm, IEnumerable <GastoOrdenDeTrabajo> gastos)
        {
            //SSOHelper.Authenticate();
            //if (SSOHelper.CurrentIdentity == null)
            //{
            //    string ssoUrl = SSOHelper.Configuration["SSO_URL"] as string;
            //    Response.Redirect(ssoUrl + "/Login.aspx");
            //}

            OrdenDeTrabajoMantenimientoCorrectivo orden = await db.ODTMantenimientosCorrectivos
                                                          .Include(o => o.SolicitudesRespuestos)
                                                          .Where(o => o.OrdenDeTrabajoId == vm.Odt.OrdenDeTrabajoId)
                                                          .SingleOrDefaultAsync();

            if (orden == null)
            {
                return(HttpNotFound());
            }

            if (vm.Odt.DetalleReparacion != null)
            {
                orden.Estado = OrdenDeTrabajoEstado.Cerrada;
                //orden.FechaReparacion = DateTime.Now;
                orden.FechaCierre = DateTime.Now;
                //orden.UsuarioReparacion = (SSOHelper.CurrentIdentity != null ? SSOHelper.CurrentIdentity.Fullname : "Usuario Anónimo");
                orden.UsuarioCierre = (SSOHelper.CurrentIdentity != null ? SSOHelper.CurrentIdentity.Fullname : "Usuario Anónimo");

                db.Entry(orden).State = EntityState.Modified;
                await db.SaveChangesAsync();

                return(RedirectToAction("Details", new { id = vm.Odt.OrdenDeTrabajoId }));
            }

            return(View(vm));
        }
        public async Task <ActionResult> DeleteConfirmed(int id)
        {
            OrdenDeTrabajoMantenimientoCorrectivo ordenDeTrabajo = await db.ODTMantenimientosCorrectivos.FindAsync(id);

            db.ODTMantenimientosCorrectivos.Remove(ordenDeTrabajo);
            await db.SaveChangesAsync();

            return(RedirectToAction("IndexMantenimientos"));
        }
        public async Task <ActionResult> Reparar(MCViewModel vm, IEnumerable <GastoOrdenDeTrabajo> gastos)
        {
            //SSOHelper.Authenticate();
            //if (SSOHelper.CurrentIdentity == null)
            //{
            //    string ssoUrl = SSOHelper.Configuration["SSO_URL"] as string;
            //    Response.Redirect(ssoUrl + "/Login.aspx");
            //}

            OrdenDeTrabajoMantenimientoCorrectivo orden = await db.ODTMantenimientosCorrectivos
                                                          .Include(o => o.SolicitudesRespuestos)
                                                          .Where(o => o.OrdenDeTrabajoId == vm.Odt.OrdenDeTrabajoId)
                                                          .SingleOrDefaultAsync();

            if (orden == null)
            {
                return(HttpNotFound());
            }

            if (vm.Odt.DetalleReparacion != null)
            {
                orden.DetalleReparacion          = vm.Odt.DetalleReparacion;
                orden.CausaRaiz                  = vm.Odt.CausaRaiz;
                orden.Limpieza                   = vm.Odt.Limpieza;
                orden.VerificacionFuncionamiento = vm.Odt.VerificacionFuncionamiento;

                orden.Estado          = OrdenDeTrabajoEstado.Reparada;
                orden.FechaReparacion = DateTime.Now;
                //orden.FechaCierre = DateTime.Now;
                orden.UsuarioReparacion = (SSOHelper.CurrentIdentity != null ? SSOHelper.CurrentIdentity.Fullname : "Usuario Anónimo");
                //orden.UsuarioCierre = (SSOHelper.CurrentIdentity != null ? SSOHelper.CurrentIdentity.Fullname : "Usuario Anónimo");

                //estado del equipo
                var equipo = db.Equipos.Find(orden.EquipoId);
                equipo.Estado          = (vm.Odt.VerificacionFuncionamiento ? EstadoDeEquipo.Funcional : EstadoDeEquipo.NoFuncionalRequiereReparacion);
                db.Entry(equipo).State = EntityState.Modified;

                //gastos
                SaveGastos(gastos, orden.OrdenDeTrabajoId);

                //observaciones
                SaveNuevaObservacion(vm.NuevaObservacion, orden);

                //solicitudes
                CloseSolicitudesRepuestos(orden);

                db.Entry(orden).State = EntityState.Modified;
                await db.SaveChangesAsync();

                return(RedirectToAction("Details", new { id = vm.Odt.OrdenDeTrabajoId }));
            }

            return(View(vm));
        }
        // GET: OrdenesDeTrabajo/Delete/5
        public async Task <ActionResult> Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            OrdenDeTrabajoMantenimientoCorrectivo ordenDeTrabajo = await db.ODTMantenimientosCorrectivos.FindAsync(id);

            if (ordenDeTrabajo == null)
            {
                return(HttpNotFound());
            }
            return(View(ordenDeTrabajo));
        }
        public async Task <ActionResult> Edit(OrdenDeTrabajoMantenimientoCorrectivo ordenDeTrabajo)
        {
            if (ModelState.IsValid)
            {
                //gastos
                SaveGastos(ordenDeTrabajo.Gastos, ordenDeTrabajo.OrdenDeTrabajoId);

                db.Entry(ordenDeTrabajo).State = EntityState.Modified;
                await db.SaveChangesAsync();

                return(RedirectToAction("IndexMantenimientos"));
            }
            ViewBag.EquipoId    = new SelectList(db.Equipos, "EquipoId", "NombreCompleto", ordenDeTrabajo.EquipoId);
            ViewBag.ProveedorId = new SelectList(db.Proveedores, "ProveedorId", "Nombre", ordenDeTrabajo.ProveedorId);
            return(View(ordenDeTrabajo));
        }
        // GET: OrdenesDeTrabajo/Edit/5
        public async Task <ActionResult> Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            OrdenDeTrabajoMantenimientoCorrectivo ordenDeTrabajo = await db.ODTMantenimientosCorrectivos.FindAsync(id);

            if (ordenDeTrabajo == null)
            {
                return(HttpNotFound());
            }
            ViewBag.EquipoId    = new SelectList(db.Equipos, "EquipoId", "NombreCompleto", ordenDeTrabajo.EquipoId);
            ViewBag.ProveedorId = new SelectList(db.Proveedores, "ProveedorId", "Nombre", ordenDeTrabajo.ProveedorId);
            return(View(ordenDeTrabajo));
        }
        override public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            OrdenDeTrabajoMantenimientoCorrectivo ordenDeTrabajo = db.ODTMantenimientosCorrectivos.Find(id);

            if (ordenDeTrabajo == null)
            {
                return(HttpNotFound());
            }
            ordenDeTrabajo.SolicitudesRespuestos = db.SolicitudesRepuestosServicios.Where(s => s.OrdenDeTrabajoId == id).ToList();
            if (ordenDeTrabajo.ProveedorId != null)
            {
                ViewBag.proveedorTercero = db.Proveedores.Find(ordenDeTrabajo.ProveedorId).Nombre;
            }
            else
            {
                ViewBag.proveedorTercero = "N/A";
            }
            return(View(ordenDeTrabajo));
        }