示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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;
        }