override public ActionResult CreateForEquipo(int id)
        {
            //SSOHelper.Authenticate();
            //if (SSOHelper.CurrentIdentity == null)
            //{
            //    string ssoUrl = SSOHelper.Configuration["SSO_URL"] as string;
            //    Response.Redirect(ssoUrl + "/Login.aspx");
            //}

            var equipo = db.Equipos.Find(id);
            var vm     = new MCViewModel();

            vm.Odt = new OrdenDeTrabajoMantenimientoCorrectivo
            {
                EquipoId      = equipo.EquipoId,
                Equipo        = equipo,
                Estado        = OrdenDeTrabajoEstado.Abierta,
                FechaInicio   = DateTime.Now,
                Prioridad     = OrdenDeTrabajoPrioridad.Normal,
                UsuarioInicio = (SSOHelper.CurrentIdentity != null ? SSOHelper.CurrentIdentity.Fullname : "Usuario Anónimo")
            };

            vm.NuevaObservacion = NuevaObservacion();

            return(View(vm));
        }
        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));
        }
        override public ActionResult Close(int id)
        {
            var odt   = db.ODTMantenimientosCorrectivos.Find(id);
            var model = new MCViewModel();

            model.Odt = odt;
            model.NuevaObservacion = NuevaObservacion();
            return(View(model));
        }
        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));
        }
        public ActionResult FillDiagnose(int id)
        {
            var odt = db.ODTMantenimientosCorrectivos.Find(id);

            //Se agrego para que en la vista se pueda ver la lista de proveedores -- Jose Gutierrez 29/05/2017
            ViewBag.ProveedorId      = new SelectList(db.Proveedores, "ProveedorId", "Nombre", odt.ProveedorId);
            ViewBag.GastoProveedorId = new SelectList(db.Proveedores, "ProveedorId", "Nombre", odt.Gastos.Select(p => p.GastoProveedorId));
            var model = new MCViewModel();

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

            if (vm.Odt.Diagnostico == null &&
                vm.Odt.Gastos == null &&
                gastos == null)
            {
                return(View(vm));
            }

            var orden = db.ODTMantenimientosCorrectivos.Find(vm.Odt.OrdenDeTrabajoId);

            //datos de diagnostico
            orden.Diagnostico        = vm.Odt.Diagnostico;
            orden.ReparoTercero      = vm.Odt.ReparoTercero;
            orden.FechaInicioTercero = vm.Odt.FechaInicioTercero;
            orden.ProveedorId        = vm.ProveedorId;
            orden.FechaDiagnostico   = DateTime.Now;
            orden.UsuarioDiagnostico = (SSOHelper.CurrentIdentity != null ? SSOHelper.CurrentIdentity.Fullname : "Usuario Anónimo");
            //gastos
            if (gastos != null)
            {
                SaveGastos(gastos, orden.OrdenDeTrabajoId);
            }
            //nueva observacion
            SaveNuevaObservacion(vm.NuevaObservacion, orden);

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

            return(RedirectToAction("Details", new { id = orden.OrdenDeTrabajoId }));
        }
        public async Task <ActionResult> CreateForEquipo(MCViewModel vm)
        {
            var errors = ModelState.Values.SelectMany(v => v.Errors);

            if (ModelState.IsValid)
            {
                vm.Odt.FechaInicio = DateTime.Now;

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

                db.ODTMantenimientosCorrectivos.Add(vm.Odt);
                //Observacion
                SaveNuevaObservacion(vm.NuevaObservacion, vm.Odt);

                await db.SaveChangesAsync();

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

            return(View(vm));
        }