public ActionResult Create(StatusVentana statusVentana) { if (ModelState.IsValid) { PersonaServicio personaServicio = new PersonaServicio(); IRespuestaServicio <Persona> persona = personaServicio.GetPersona(User.Identity.GetUserId()); if (persona.EjecucionCorrecta) { statusVentana.IdResponsable = persona.Respuesta.Id; } var IdSubCategoria = db.Ventana.Where(x => x.Id == statusVentana.IdVentana).Select(x => x.IdSubCategoria).FirstOrDefault(); WorkFlowServicio workflowServicio = new WorkFlowServicio(); IRespuestaServicio <WorkFlowView> workFlow = workflowServicio.nextEstatus(IdSubCategoria, statusVentana.IdStatus, false); statusVentana.IdStatus = workFlow.Respuesta.EstatusSiguiente.Id; statusVentana.Fecha = DateTime.Now; if (statusVentana.Comentarios == null) { statusVentana.Comentarios = " "; } db.StatusVentana.Add(statusVentana); db.SaveChanges(); var ventana = db.Ventana .Include(v => v.StatusVentana) .Include(v => v.StatusVentana.Select(s => s.Status)) .Include(v => v.BitacoraVentana) .Include(v => v.BitacoraVentana.Select(b => b.Estatus)) .Include(v => v.BitacoraVentana.Select(b => b.Rechazo)) .Include(v => v.Evento) .Include(v => v.Proveedor) .Where(x => x.Id == statusVentana.IdVentana) .FirstOrDefault(); try { UsuarioServicio usuarioServicio = new UsuarioServicio(); NotificationService notify = new NotificationService(); string senders = usuarioServicio.GetEmailByStatus(ventana); if (senders != "") { EmailService emailService = new EmailService(); emailService.SendMail(senders, ventana); } } catch (Exception e) { Console.WriteLine(e.Message); } return(RedirectToAction("Index", "Evento", new { Area = "Operaciones" })); } return(View(statusVentana)); }
public Boolean changeEstatus(Ventana ventana) { if (ModelState.IsValid) { var estatus = new Estatus(); estatus = db.StatusVentana .Where(s => (s.IdVentana == ventana.Id)) .OrderByDescending(s => s.Fecha) .Select(s => s.Status) .FirstOrDefault(); if (estatus == null) { estatus = db.Estatus .Where(e => e.IdCategoria == (db.SubCategoria.Where(s => s.Id == ventana.IdSubCategoria).Select(s => s.IdCategoria).FirstOrDefault())) .FirstOrDefault(); } WorkFlowServicio workflowServicio = new WorkFlowServicio(); IRespuestaServicio <WorkFlowView> workFlow = workflowServicio.nextEstatus(ventana.IdSubCategoria, estatus.Id, false); if (workFlow.EjecucionCorrecta) { PersonaServicio personaServicio = new PersonaServicio(); IRespuestaServicio <Persona> persona = personaServicio.GetPersona(User.Identity.GetUserId()); StatusVentana statusVentana = new StatusVentana(); statusVentana.IdVentana = ventana.Id; statusVentana.IdResponsable = persona.Respuesta.Id; if (estatus.Id == 0) { statusVentana.IdStatus = workFlow.Respuesta.EstatusInicial.Id; } else { statusVentana.IdStatus = workFlow.Respuesta.EstatusSiguiente.Id; } statusVentana.Fecha = DateTime.Now; statusVentana.Comentarios = " "; db.StatusVentana.Add(statusVentana); db.SaveChanges(); } return(true); } return(false); }
public bool changeStatus(Evento evento) { Ventana ventana = db.Ventana .Include(v => v.StatusVentana) .Include(v => v.StatusVentana.Select(s => s.Status)) .Include(v => v.BitacoraVentana) .Include(v => v.BitacoraVentana.Select(b => b.Estatus)) .Include(v => v.BitacoraVentana.Select(b => b.Rechazo)) .Include(v => v.Evento) .Include(v => v.Proveedor) .SingleOrDefault(x => x.IdEvento == evento.Id); if (ventana != null) { try { WorkFlowServicio workflowServicio = new WorkFlowServicio(); IRespuestaServicio <WorkFlowView> workFlow = workflowServicio.nextEstatus(ventana.IdSubCategoria, ventana.StatusVentana.OrderByDescending(x => x.Fecha).Select(x => x.IdStatus).FirstOrDefault(), false); StatusVentana statusVentana = new StatusVentana(); statusVentana.IdResponsable = evento.IdAsignador; statusVentana.IdStatus = workFlow.Respuesta.EstatusSiguiente.Id; statusVentana.IdVentana = ventana.Id; statusVentana.Fecha = DateTime.Now; statusVentana.Comentarios = "Se reagenda ventana"; db.StatusVentana.Add(statusVentana); db.SaveChanges(); UsuarioServicio usuarioServicio = new UsuarioServicio(); NotificationService notify = new NotificationService(); string senders = usuarioServicio.GetEmailByStatus(ventana); EmailService emailService = new EmailService(); emailService.SendMail(senders, ventana); return(true); } catch (Exception e) { Console.WriteLine(e); } } return(false); }
public IHttpActionResult PostBitacoraVentana(BitacoraVentana bitacoraVentana) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } try { Ventana ventana = db.Ventana .Include(v => v.StatusVentana) .Where(v => (v.Id == bitacoraVentana.IdVentana)) .FirstOrDefault(); WorkFlowServicio workflowServicio = new WorkFlowServicio(); IRespuestaServicio <WorkFlowView> workFlow = workflowServicio.nextEstatus(ventana.IdSubCategoria, ventana.StatusVentana.Where(s => s.IdVentana == bitacoraVentana.IdVentana).OrderByDescending(s => s.Fecha).FirstOrDefault().IdStatus, true); if (workFlow.Respuesta != null) { bitacoraVentana.IdStatus = workFlow.Respuesta.EstatusSiguiente.Id; } else { workFlow = workflowServicio.nextEstatus(ventana.IdSubCategoria, ventana.StatusVentana.Where(s => s.IdVentana == bitacoraVentana.IdVentana).OrderByDescending(s => s.Fecha).FirstOrDefault().IdStatus, false); bitacoraVentana.IdStatus = workFlow.Respuesta.EstatusInicial.Id; } bitacoraVentana.Fecha = DateTime.Now.Date; db.BitacoraVentana.Add(bitacoraVentana); db.SaveChanges(); } catch (Exception e) { Console.WriteLine(e.Message); } BitacoraVentana bitacoraVentanaAdded = db.BitacoraVentana.Find(bitacoraVentana.Id); return(Ok(bitacoraVentanaAdded)); }
public IHttpActionResult PostStatusVentana(StatusVentana statusVentana) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } try { var IdSubCategoria = db.Ventana.Where(x => x.Id == statusVentana.IdVentana).Select(x => x.IdSubCategoria).FirstOrDefault(); var IdActualStatus = db.StatusVentana.OrderByDescending(x => x.Fecha).Where(x => x.IdVentana == statusVentana.IdVentana).Select(x => x.IdStatus).FirstOrDefault(); WorkFlowServicio workflowServicio = new WorkFlowServicio(); IRespuestaServicio <WorkFlowView> workFlow = workflowServicio.nextEstatus(IdSubCategoria, IdActualStatus, false); statusVentana.IdStatus = workFlow.Respuesta.EstatusSiguiente.Id; statusVentana.Fecha = DateTime.Now; db.StatusVentana.Add(statusVentana); db.SaveChanges(); var ventana = db.Ventana .Include(v => v.StatusVentana) .Include(v => v.StatusVentana.Select(s => s.Status)) .Include(v => v.BitacoraVentana) .Include(v => v.BitacoraVentana.Select(b => b.Estatus)) .Include(v => v.BitacoraVentana.Select(b => b.Rechazo)) .Include(v => v.Evento) .Where(x => x.Id == statusVentana.IdVentana) .FirstOrDefault(); UsuarioServicio usuarioServicio = new UsuarioServicio(); NotificationService notify = new NotificationService(); string senders = usuarioServicio.GetEmailByStatus(ventana); if (senders != "") { EmailService emailService = new EmailService(); emailService.SendMail(senders, ventana); } List <DispositivoView> dispositivos = usuarioServicio.GetDispositivoByEvento(statusVentana.Ventana.IdEvento); List <string> llaves = dispositivos.Select(x => x.Llave).ToList(); var estatus = ventana.StatusVentana.OrderByDescending(s => s.Fecha).Select(s => s.Status).FirstOrDefault(); if (llaves.Count > 0) { foreach (string notificacion in llaves) { notify.SendPushNotification(notificacion, " Cambio de estatus Ventana: " + ventana.Evento.Descripcion + ". ", " Cambio de estatus a " + estatus.Nombre); } } } catch (Exception e) { Console.WriteLine(e.Message); } StatusVentana statusVentanaAdded = db.StatusVentana.Find(statusVentana.Id); return(Ok(statusVentanaAdded)); }