//Agregar FormatosVisita public void AgregarFormatoVisita(FormatosVisita Formato, int IdVisita, int IdInspector) { using (var ctx = new DB_A66D31_intratecPrbEntities1()) { Visitas visita = ctx.Visitas.Where(v => v.IdVisita == IdVisita).FirstOrDefault(); if (visita != null) { ConsecutivosFormatos cons = ctx.ConsecutivosFormatos.Where(c => c.IdFormato == Formato.IdFormato && c.Consecutivo == Formato.Consecutivo && c.IdInspector == IdInspector).FirstOrDefault(); if (cons != null) { if (cons.IdVisita == null) { Formato.Secuencia = ctx.FormatosVisita.Where(fv => fv.IdVisita == Formato.IdVisita).Count() + 1; visita.FormatosVisita.Add(Formato); cons.IdVisita = IdVisita.ToString(); ctx.SaveChanges(); } else { throw new Exception("El consecutivo ya fue usado en otra visita"); } } else { throw new Exception("Usted no tiene asignado este consecutivo"); } } else { throw new Exception("No se encontró la visita"); } } }
//6. Asignación de consecutivos a inspectores public void AsignarRangoConsecutivosFormatoInspector(int IdFormato, int IdInspector, int ConsecutivoInicial, int ConsecutivoFinal, int IdUsuarioAsigna) { string estadoConsecutivo = "P"; string tramite = "ASIGNACION"; using (var ctx = new DB_A66D31_intratecPrbEntities1()) { //Acá validamos que todos los consecutivos estén disponibles, o sea, que no se los hayan asignado a ningún inspector for (int i = ConsecutivoInicial; i <= ConsecutivoFinal; i++) { if (ctx.ConsecutivosFormatos.Where(c => c.IdFormato == IdFormato && c.Consecutivo == i && (!c.IdEstadoConsecutivoInspector.Equals("B") && !c.IdEstadoConsecutivoInspector.Equals("R"))).FirstOrDefault() != null) { throw new Exception($"El consecutivo {i} del formato {IdFormato} ya ha sido asignado a un inspector"); } } for (int i = ConsecutivoInicial; i <= ConsecutivoFinal; i++) { ConsecutivosFormatos con = ctx.ConsecutivosFormatos.Where(c => c.IdFormato == IdFormato && c.Consecutivo == i).FirstOrDefault(); con.IdInspector = IdInspector; con.IdEstadoConsecutivoInspector = estadoConsecutivo; con.FechaModificacion = DateTime.Now; con.IdUsuarioModificacion = IdUsuarioAsigna; int sec = 0; try { sec = ctx.TramiteConsecutivoFormato.Where(t => t.IdFormato == IdFormato && t.Consecutivo == i).Count(); } catch { } sec += 1; ctx.TramiteConsecutivoFormato.Add(new TramiteConsecutivoFormato() { IdFormato = IdFormato, IdInspector = IdInspector, Consecutivo = i, Tramite = tramite, FechaCreacion = DateTime.Now, IdUsuarioCreacion = IdUsuarioAsigna, Secuencia = sec, Observaciones = "Asignación inicial de Consecutivo" }); ctx.SaveChanges(); } } }
//8. Actualizar estado Consecutivo: Aplica para aceptación, rechazo y anulación. Permite actualizar más de un consecutivo. public void ActualizarEstadoConsecutivo(int IdFormato, List <int> Consecutivos, string IdEstado, int IdUsuarioActualiza, string Observaciones) { string tramite = string.Empty; switch (IdEstado) { case "A": tramite = "ACEPTACION"; break; case "R": tramite = "RECHAZO"; break; case "X": tramite = "ANULACION"; break; } using (var ctx = new DB_A66D31_intratecPrbEntities1()) { foreach (int i in Consecutivos) { ConsecutivosFormatos con = ctx.ConsecutivosFormatos.Where(c => c.IdFormato == IdFormato && c.Consecutivo == i).FirstOrDefault(); if (con != null) { //Si es rechazo el consecutivo se debe liberar if (!IdEstado.Equals("R")) { con.IdEstadoConsecutivoInspector = IdEstado; con.FechaModificacion = DateTime.Now; con.IdUsuarioModificacion = IdUsuarioActualiza; } else { con.IdInspector = null; con.IdEstadoConsecutivoInspector = IdEstado; con.FechaModificacion = DateTime.Now; con.IdUsuarioModificacion = IdUsuarioActualiza; } int sec = 0; try { sec = ctx.TramiteConsecutivoFormato.Where(t => t.IdFormato == IdFormato && t.Consecutivo == i).Count(); } catch { } sec += 1; ctx.TramiteConsecutivoFormato.Add(new TramiteConsecutivoFormato() { IdFormato = IdFormato, IdInspector = IdUsuarioActualiza, Consecutivo = i, Tramite = tramite, FechaCreacion = DateTime.Now, IdUsuarioCreacion = IdUsuarioActualiza, Secuencia = sec, Observaciones = Observaciones }); ctx.SaveChanges(); } else { throw new Exception("Consecutivo no asignado aún"); } } } }