public ActionResult Editar(int idReporte) { //REPORTE reporte = detalle.ANALISIS_EMPLEADO.First().REPORTEs.First(); REPORTE reporte = db.REPORTEs.Find(idReporte); ViewBag.Reporte = reporte; DETALLE_SOLICITUD detalle = db.DETALLE_SOLICITUD.Find(reporte.ANALISIS_EMPLEADO.id_detalle_solicitud); ViewBag.DetalleSol = detalle; return(PartialView(reporte)); }
public void crearDetalleSolicitud(SOLICITUD Solicitud, List <EmpleadoSeleccion> empleadosSeleccion) { List <DETALLE_SOLICITUD> detallesList = new List <DETALLE_SOLICITUD>(); foreach (EmpleadoSeleccion empleadoSeleccion in empleadosSeleccion) { List <Int32> analisisList = empleadoSeleccion.analisis; for (var i = 0; i < analisisList.Count(); i++) { ANALISI analisis = db.ANALISIS.Find(analisisList[i]); DETALLE_SOLICITUD detalleSolicitud = new DETALLE_SOLICITUD() { id_solicitud = Solicitud.id_solicitud, id_analisis = analisis.id_analisis }; db.DETALLE_SOLICITUD.Add(detalleSolicitud); db.SaveChanges(); ANALISIS_EMPLEADO analisisEmpleado = new ANALISIS_EMPLEADO() { id_detalle_solicitud = detalleSolicitud.id_detalle_solicitud, id_empleado = empleadoSeleccion.idEmpleado }; db.ANALISIS_EMPLEADO.Add(analisisEmpleado); db.SaveChanges(); } if (analisisList.Count() > 0) { PROCESO_ANALISTA procesoAnalista = new PROCESO_ANALISTA { solicitud_id = Solicitud.id_solicitud, empleado_id = empleadoSeleccion.idEmpleado, cantidad_analisis = (byte)analisisList.Count() }; db.PROCESO_ANALISTA.Add(procesoAnalista); } db.SaveChanges(); } }
public ActionResult GuardarAsignacion() { Stream req = Request.InputStream; req.Seek(0, System.IO.SeekOrigin.Begin); string json = new StreamReader(req).ReadToEnd(); var dbTransaction = db.Database.BeginTransaction(); Object result; try { EMPLEADO empleado = this.empleado(); JObject input = (JObject)JsonConvert.DeserializeObject(json); int idSolicitud = input.GetValue("idSolicitud").ToObject <int>(); var empleados = input.GetValue("empleados"); SOLICITUD solicitud = db.SOLICITUDs.Find(idSolicitud); List <EmpleadoSeleccion> empleadosSeleccion = getEmpleadosSeleccion(empleados); List <int> analisisSolicitud = new List <int>(); foreach (EmpleadoSeleccion empleadoSeleccion in empleadosSeleccion) { List <Int32> analisisList = empleadoSeleccion.analisis; for (var i = 0; i < analisisList.Count(); i++) { analisisSolicitud.Add(analisisList[i]); ANALISI analisis = db.ANALISIS.Find(analisisList[i]); IEnumerable <DETALLE_SOLICITUD> detalles = solicitud.DETALLE_SOLICITUD; DETALLE_SOLICITUD detalleSolicitud; if (detalles.Where(d => d.id_analisis == analisis.id_analisis).Count() == 1) { detalleSolicitud = detalles.Where(d => d.id_analisis == analisis.id_analisis).First(); } else { detalleSolicitud = new DETALLE_SOLICITUD() { id_solicitud = solicitud.id_solicitud, id_analisis = analisis.id_analisis }; db.DETALLE_SOLICITUD.Add(detalleSolicitud); db.SaveChanges(); } ANALISIS_EMPLEADO analisisEmpleado; if (detalleSolicitud.ANALISIS_EMPLEADO.Count() == 1) { analisisEmpleado = detalleSolicitud.ANALISIS_EMPLEADO.First(); analisisEmpleado.id_empleado = empleadoSeleccion.idEmpleado; } else { analisisEmpleado = new ANALISIS_EMPLEADO() { id_detalle_solicitud = detalleSolicitud.id_detalle_solicitud, id_empleado = empleadoSeleccion.idEmpleado }; db.ANALISIS_EMPLEADO.Add(analisisEmpleado); db.SaveChanges(); } } if (analisisList.Count() > 0) { PROCESO_ANALISTA procesoAnalista; if (db.PROCESO_ANALISTA.Where(pa => pa.empleado_id == empleadoSeleccion.idEmpleado).Count() > 1) { procesoAnalista = db.PROCESO_ANALISTA.Where(pa => pa.empleado_id == empleadoSeleccion.idEmpleado).First(); procesoAnalista.cantidad_analisis = (byte)analisisList.Count(); } else { procesoAnalista = new PROCESO_ANALISTA { solicitud_id = solicitud.id_solicitud, empleado_id = empleadoSeleccion.idEmpleado, cantidad_analisis = (byte)analisisList.Count() }; db.PROCESO_ANALISTA.Add(procesoAnalista); } db.SaveChanges(); } List <DETALLE_SOLICITUD> detallesToRemove = db.DETALLE_SOLICITUD.Where(ds => ds.id_solicitud == solicitud.id_solicitud && !analisisSolicitud.Contains(ds.id_analisis)).ToList(); foreach (DETALLE_SOLICITUD detalleToRemove in detallesToRemove) { db.DETALLE_SOLICITUD.Remove(detalleToRemove); } db.SaveChanges(); } dbTransaction.Commit(); result = new { isValid = true, id = solicitud.id_solicitud }; } catch (Exception e) { dbTransaction.Rollback(); var msg = e.Message; result = new { isValid = false, msg = msg }; } return(Json(result)); }
public ActionResult CreateVisitas(VISITA visita, int solicitud, int cantidad_muestras) { GRUPO_SOLICITUD grupoSolicitud = db.GRUPO_SOLICITUD.Find(solicitud); List <Int32> referencia = this.numeroReferencia(); var dbTransaction = db.Database.BeginTransaction(); Object result; try { Int32 correlativo = referencia.ElementAt(0); for (var i = 0; i < cantidad_muestras; i++) { SOLICITUD newSolicitud = new SOLICITUD(); newSolicitud.fecha_creacion = DateTime.Now; newSolicitud.id_empleado = this.empleado().id_empleado; newSolicitud.id_estado = 1; newSolicitud.id_estado_proceso = 1; newSolicitud.no_referencia = referencia.ElementAt(1).ToString() + "-" + correlativo.ToString().PadLeft(4, '0'); newSolicitud.id_solicitante = grupoSolicitud.SOLICITANTE.id_solicitante; newSolicitud.informe_generado = 0; db.SOLICITUDs.Add(newSolicitud); db.SaveChanges(); visita.id_solicitud = newSolicitud.id_solicitud; visita.id_grupo_solicitud = solicitud; var horaEntrega = Request.Form["hora_entrega"]; var horasEntrega = Int32.Parse(horaEntrega.Substring(0, 2)); var minutosEntrega = Int32.Parse(horaEntrega.Substring(3, 2)); var fechaEntrega = visita.fecha_entrega.Value.ToShortDateString(); visita.fecha_entrega = new DateTime(Int32.Parse(fechaEntrega.Substring(6, 4)), Int32.Parse(fechaEntrega.Substring(3, 2)), Int32.Parse(fechaEntrega.Substring(0, 2)), horasEntrega, minutosEntrega, 0); if (visita.lat == null) { SITIO_MUESTREO sitio = db.SITIO_MUESTREO.Find(visita.id_sitio_muestreo); visita.lat = sitio.lat; visita.lng = sitio.lng; } db.VISITAs.Add(visita); db.SaveChanges(); foreach (var id in grupoSolicitud.preset.Split(',')) { int analisis = Int32.Parse(id); DETALLE_SOLICITUD detalle = new DETALLE_SOLICITUD(); detalle.id_analisis = analisis; detalle.id_solicitud = newSolicitud.id_solicitud; db.DETALLE_SOLICITUD.Add(detalle); } db.SaveChanges(); correlativo++; } dbTransaction.Commit(); result = new { isValid = true }; } catch (Exception e) { dbTransaction.Rollback(); var msg = e.Message; result = new { isValid = false, msg = msg }; } return(Json(result)); }
public ActionResult EditarVisitaPost(VISITA visita, string visitaId, int cantidad_muestras) { IEnumerable <VISITA> visitas = db.VISITAs.Where(v => v.id == visitaId).OrderByDescending(v => v.id_visita); Object result; var dbTransaction = db.Database.BeginTransaction(); try { var countVisitas = visitas.Count(); List <Int32> referencia = this.numeroReferencia(); if (cantidad_muestras > countVisitas) { Int32 correlativo = referencia.ElementAt(0); GRUPO_SOLICITUD grupoSolicitud = visitas.First().GRUPO_SOLICITUD; for (var i = 0; i < (cantidad_muestras - countVisitas); i++) { // crear visitas y solicitudes(muestras) SOLICITUD newSolicitud = new SOLICITUD(); newSolicitud.fecha_creacion = DateTime.Now; newSolicitud.id_empleado = this.empleado().id_empleado; newSolicitud.id_estado = 1; newSolicitud.id_estado_proceso = 1; newSolicitud.no_referencia = referencia.ElementAt(1).ToString() + "-" + correlativo.ToString().PadLeft(4, '0'); newSolicitud.id_solicitante = grupoSolicitud.SOLICITANTE.id_solicitante; newSolicitud.informe_generado = 0; db.SOLICITUDs.Add(newSolicitud); db.SaveChanges(); visita.id_solicitud = newSolicitud.id_solicitud; visita.id_grupo_solicitud = grupoSolicitud.id_grupo_solicitud; var horaEntrega = Request.Form["hora_entrega"]; var horasEntrega = Int32.Parse(horaEntrega.Substring(0, 2)); var minutosEntrega = Int32.Parse(horaEntrega.Substring(3, 2)); var fechaEntrega = visita.fecha_entrega.Value.ToShortDateString(); visita.fecha_entrega = new DateTime(Int32.Parse(fechaEntrega.Substring(6, 4)), Int32.Parse(fechaEntrega.Substring(3, 2)), Int32.Parse(fechaEntrega.Substring(0, 2)), horasEntrega, minutosEntrega, 0); if (visita.lat == null) { SITIO_MUESTREO sitio = db.SITIO_MUESTREO.Find(visita.id_sitio_muestreo); visita.lat = sitio.lat; visita.lng = sitio.lng; } db.VISITAs.Add(visita); db.SaveChanges(); foreach (var id in grupoSolicitud.preset.Split(',')) { int analisis = Int32.Parse(id); DETALLE_SOLICITUD detalle = new DETALLE_SOLICITUD(); detalle.id_analisis = analisis; detalle.id_solicitud = newSolicitud.id_solicitud; db.DETALLE_SOLICITUD.Add(detalle); } db.SaveChanges(); correlativo++; } } else if (cantidad_muestras < countVisitas) { // verificar que el estado de las solicitudes sea 1 var toDelete = countVisitas - cantidad_muestras; foreach (VISITA visitaToDelete in visitas) { if (toDelete == 0) { break; } if (visitaToDelete.SOLICITUD.id_estado == 1) { toDelete--; SOLICITUD solicitudToRemove = visitaToDelete.SOLICITUD; if (visitaToDelete.DETALLE_VISITA.Count() > 0) { foreach (DETALLE_VISITA detalleVisita in visitaToDelete.DETALLE_VISITA.ToList()) { db.DETALLE_VISITA.Remove(detalleVisita); } } db.VISITAs.Remove(visitaToDelete); if (solicitudToRemove.DETALLE_SOLICITUD.Count() > 0) { foreach (DETALLE_SOLICITUD detalle in solicitudToRemove.DETALLE_SOLICITUD.ToList()) { if (detalle.ANALISIS_EMPLEADO.FirstOrDefault() != null) { db.ANALISIS_EMPLEADO.Remove(detalle.ANALISIS_EMPLEADO.FirstOrDefault()); } db.DETALLE_SOLICITUD.Remove(detalle); } } db.SOLICITUDs.Remove(solicitudToRemove); } } if (toDelete > 0) { throw new Exception("No es posible disminuir el numero de muestras ya que no hay suficientes con estado 'Pendiente'"); } } db.SaveChanges(); visitas = db.VISITAs.Where(v => v.id == visitaId); foreach (VISITA visitaUpdate in visitas) { visitaUpdate.fecha_visita = visita.fecha_visita; var horaEntrega = Request.Form["hora_entrega"]; var horasEntrega = Int32.Parse(horaEntrega.Substring(0, 2)); var minutosEntrega = Int32.Parse(horaEntrega.Substring(3, 2)); var fechaEntrega = visita.fecha_entrega.Value.ToShortDateString(); visitaUpdate.fecha_entrega = new DateTime(Int32.Parse(fechaEntrega.Substring(6, 4)), Int32.Parse(fechaEntrega.Substring(3, 2)), Int32.Parse(fechaEntrega.Substring(0, 2)), horasEntrega, minutosEntrega, 0); visitaUpdate.id_procedencia = visita.id_procedencia; visitaUpdate.id_empleado = visita.id_empleado; visitaUpdate.id_empleado_entrega = visita.id_empleado_entrega; visitaUpdate.id_sitio_muestreo = visita.id_sitio_muestreo; visitaUpdate.id_tipo_muestra = visita.id_tipo_muestra; visitaUpdate.id = visita.id; } db.SaveChanges(); dbTransaction.Commit(); result = new { isValid = true }; } catch (Exception e) { dbTransaction.Rollback(); var msg = e.Message; result = new { isValid = false, msg = msg }; } return(Json(result)); }