public ActionResult ingresoOT() { //Para borrar los datos de creaciones pasadas if (Session["listaServiciosNvaOT"] != null) { List<ServicioListado> listaAgregadosSesion = (List<ServicioListado>)Session["listaServiciosNvaOT"]; listaAgregadosSesion.Clear(); Session["listaServiciosNvaOT"] = null; } ViewBag.listaDias = getListaDias(); ViewBag.listaMeses = getListaMeses(); ViewBag.listaServicios = new List<SelectListItem>(); ViewBag.listaRuts = OrdenTrabajoModel.getClientes(); List<SelectListItem> contratosSelectedList = new List<SelectListItem>(); //List<Contrato> contratos = OrdenTrabajo.getContratosSegunCliente(-1); ViewBag.listaContratos = contratosSelectedList; //Cargo los valores por defecto de la vista OrdenTrabajoModel ordenTrabajo = new OrdenTrabajoModel(); ordenTrabajo.ciudad_ot = "Santiago"; DateTime ahora = DateTime.Now; ordenTrabajo.dia_ini_ot = ahora.Day.ToString(); ordenTrabajo.mes_ini_ot = ahora.Month.ToString(); ordenTrabajo.agno_ini_ot = ahora.Year.ToString(); ordenTrabajo.dia_fin_ot = ahora.Day.ToString(); ordenTrabajo.mes_fin_ot = ahora.Month.ToString(); ordenTrabajo.agno_fin_ot = ordenTrabajo.agno_ini_ot; ordenTrabajo.precioReferenciaContrato = "0"; ordenTrabajo.precioFinal = "0"; ordenTrabajo.cantidadDelServicio = "1"; return View(ordenTrabajo); }
public ActionResult ingresoOT(OrdenTrabajoModel ordenTrabajo, string btn_crear_ot, string btn_agregarServicio) { ViewBag.listaDias = getListaDias(); ViewBag.listaMeses = getListaMeses(); ViewBag.listaRuts = OrdenTrabajoModel.getClientes(); List<SelectListItem> contratosSelectedList = new List<SelectListItem>(); List<Contrato> contratos; List<ServicioListado> listaAgregadosSesion; if (Session["listaServiciosNvaOT"] == null) { listaAgregadosSesion = new List<ServicioListado>(); } else { listaAgregadosSesion = (List<ServicioListado>)Session["listaServiciosNvaOT"]; } int id_servicio = 0; if (btn_crear_ot == null) //Si se presionó cualquier botón distinto del de crear la OT { ModelState.Clear(); if (btn_agregarServicio != null) { ServicioListado nvoServ = new ServicioListado(); nvoServ.descripcion = ordenTrabajo.breve_descripcion; nvoServ.id_servicio = ordenTrabajo.servicioSeleccionado; if (!Int32.TryParse(nvoServ.id_servicio, out id_servicio)) { ViewBag.RespuestaPost = "No se ha podido cargar el nombre del servicio"; ViewBag.tipoRespuestaPost = "error"; } nvoServ.nombre_servicio = ServicioListado.getNombreServicio(id_servicio); nvoServ.precio_acordado = ordenTrabajo.precioFinal; nvoServ.cantidad = ordenTrabajo.cantidadDelServicio; //Controlo que el servicio no haya sido agregado anteriormente bool yaAgregado = false; foreach (ServicioListado servTemp in listaAgregadosSesion) { if (servTemp.id_servicio.Equals(nvoServ.id_servicio)) { ViewBag.RespuestaPost = "Ya tiene agregado el servicio"; ViewBag.tipoRespuestaPost = "advertencia"; yaAgregado = true; } } if (!yaAgregado) { listaAgregadosSesion.Add(nvoServ); } Session["listaServiciosNvaOT"] = listaAgregadosSesion; } else { //Quito de la lista de agregados en caso que se haya presionado un botón quitar NameValueCollection col = Request.Params; string nombreParam = "", id_servicioStr; for (int i = 0; i < Request.Params.Count; i++) { nombreParam = col.GetKey(i); //Con esto accedo al nombre del parámetro if (nombreParam.Contains("quitar_")) //Con esto omito los parámetros que no me importan { if (Session["listaServiciosNvaOT"] != null) { id_servicioStr = nombreParam.Substring("quitar_".Length); if (Int32.TryParse(id_servicioStr, out id_servicio)) { bool re = false; List<ServicioListado> listaTemp = (List<ServicioListado>)Session["listaServiciosNvaOT"]; int pos = 0; foreach (ServicioListado t in listaTemp) { if (t.id_servicio.Equals(id_servicioStr)) { re = true; break; } pos++; } if (re) { listaTemp.RemoveAt(pos); ViewBag.respuestaPost = "Se ha quitado el servicio de la lista de servicio de la orden de trabajo"; ViewBag.tipoRespuetaPost = "information"; } else { ViewBag.respuestaPost = "El servicio que desea quitar no se encontraba en la lista"; ViewBag.tipoRespuetaPost = "error"; } } } } } } } else //Se presionó el botón crear OT { string respuesta = ""; if (Session["listaServiciosNvaOT"] != null) { if (listaAgregadosSesion.Count == 0) { respuesta = "No ha agregado servicios a la orden de trabajo"; ViewBag.tipoRespuestaPost = "informacion"; } else { //Camino feliz int enteroTemp; bool satisfactorio = true; if (!(satisfactorio = satisfactorio && Int32.TryParse(ordenTrabajo.agno_ini_ot, out enteroTemp))) { ModelState.AddModelError("agno_ini_ot", "El año de inicio de la orden de trabajo no es válido"); } if (!(satisfactorio = satisfactorio && Int32.TryParse(ordenTrabajo.agno_fin_ot, out enteroTemp))) { ModelState.AddModelError("agno_fin_ot", "El año de finalización de la orden de trabajo no es válido"); } if (!(satisfactorio = satisfactorio && Int32.TryParse(ordenTrabajo.nro_orden_segun_cliente, out enteroTemp))) { ModelState.AddModelError("nro_orden_segun_cliente", "El N° de la orden de trabajo no es válido"); } if (ModelState.IsValid) { respuesta = OrdenTrabajoModel.insertOrdenTrabajo(ordenTrabajo, listaAgregadosSesion); ViewBag.tipoRespuestaPost = "informacion"; } } } else { respuesta = "No ha agregado servicios a la orden de trabajo"; ViewBag.tipoRespuestaPost = "informacion"; } ViewBag.respuestaPost = respuesta; } //cargo los contratos que correspondan if (Int32.TryParse(ordenTrabajo.cliente, out id_servicio)) { contratos = OrdenTrabajoModel.getContratosSegunCliente(id_servicio); } else { contratosSelectedList = new List<SelectListItem>(); ViewBag.RespuestaPost = "Problemas con el rut del cliente"; ViewBag.tipoRespuestaPost = "error"; contratos = new List<Contrato>(); } ordenTrabajo.descripcion_contrato = ""; bool coincideAlguno = false; foreach (Contrato t in contratos) { if (ordenTrabajo.contrato != null) { if (ordenTrabajo.contrato.Equals(t.id_contrato.ToString())) { coincideAlguno = true; ordenTrabajo.descripcion_contrato = t.breve_descripcion; } } contratosSelectedList.Add(new SelectListItem { Text = t.id_contrato, Value = t.id_contrato }); } if (!coincideAlguno && contratos.Count > 0) { ordenTrabajo.contrato = contratos[0].id_contrato; ordenTrabajo.descripcion_contrato = contratos[0].breve_descripcion; } else if (!coincideAlguno) { ordenTrabajo.descripcion_contrato = ""; } //Cargo la lista de servicios para el contrato y su precio correspondiente int id_contrato_seleccionado = -1; Int32.TryParse(ordenTrabajo.contrato, out id_contrato_seleccionado); List<SelectListItem> serviciosDelContrato = servicioContrato.getServiciosDeContrato(id_contrato_seleccionado); ViewBag.listaServicios = serviciosDelContrato; coincideAlguno = false; foreach (SelectListItem t in serviciosDelContrato) { if (ordenTrabajo.servicioSeleccionado != null) { if (ordenTrabajo.servicioSeleccionado.Equals(t.Value)) { coincideAlguno = true; ordenTrabajo.precioReferenciaContrato = servicioContrato.getPrecioAcordadoServicio(Int32.Parse(t.Value), id_contrato_seleccionado).ToString(); ordenTrabajo.precioFinal = ordenTrabajo.precioReferenciaContrato; } } } if (!coincideAlguno && contratos.Count > 0) { ordenTrabajo.servicioSeleccionado = serviciosDelContrato[0].Value; ordenTrabajo.precioReferenciaContrato = servicioContrato.getPrecioAcordadoServicio(Int32.Parse(serviciosDelContrato[0].Value), id_contrato_seleccionado).ToString(); ordenTrabajo.precioFinal = ordenTrabajo.precioReferenciaContrato; } else if (!coincideAlguno) { ordenTrabajo.precioReferenciaContrato = "0"; ordenTrabajo.precioFinal = "0"; } ViewBag.listaContratos = contratosSelectedList; ViewBag.listaServiciosAgregados = listaAgregadosSesion; return View(ordenTrabajo); }
public static string insertOrdenTrabajo(OrdenTrabajoModel ot, List<ServicioListado> listaServ) { string fecha_ini = ot.dia_ini_ot+ "-"+ot.mes_ini_ot+"-"+ot.agno_ini_ot; string fecha_term = ot.dia_fin_ot+ "-"+ot.mes_fin_ot+"-"+ot.agno_fin_ot; string query = "SELECT sp_new_orden_trabajo("+ot.contrato+", "+ot.nro_orden_segun_cliente+", '"+ot.comuna_ot+"', '"+ot.direccion_ot+"', '"+fecha_ini + "', '"+ fecha_term+ "', "; //string resto = "ids_servicios integer[], cantidades_servicios integer[], precios_finales integer[], descripciones_servicios VARCHAR(200)[])"; string id_servs = "ARRAY["; string cantidades = "ARRAY["; string precios = "ARRAY["; string descripciones = "ARRAY["; foreach(ServicioListado temp in listaServ) { if (temp != listaServ[0]) { id_servs += ", "; cantidades += ", "; precios += ", "; descripciones += ", "; } id_servs += temp.id_servicio; cantidades += temp.cantidad; precios += temp.precio_acordado; descripciones += "'"+temp.descripcion+"'"; } query += id_servs + "], " + cantidades + "], " + precios + "], " + descripciones + "])"; string respuesta = ""; NpgsqlDataReaderWithConection result = null; try { result = DBConector.SELECT(query); if (result.Read()) { respuesta = result.GetString(0); } } catch (Exception) { respuesta = "Error al realizar la consulta a la base de datos"; } if (result != null) { result.CloseTodo(); } return respuesta; }