Exemple #1
0
        protected void btnModificarEstado_Click(object sender, EventArgs e)
        {
            string campoNroEnvio = txtNroEnvio.Text;
            int    nroResult;
            bool   resultNro = int.TryParse(this.txtNroEnvio.Text, out nroResult);
            int    nroEnvio  = nroResult;

            string   campoFechaRec = txtFechaRec.Text;
            DateTime fechaRecResult;
            bool     resultFechaRec = DateTime.TryParse(this.txtFechaRec.Text, out fechaRecResult);
            DateTime fechaRec       = fechaRecResult;

            string   campoFechaSal = txtFechaSal.Text;
            DateTime fechaSalResult;
            bool     resultFechaSal = DateTime.TryParse(this.txtFechaSal.Text, out fechaSalResult);
            DateTime fechaSal       = fechaSalResult;

            string adm = txtIdAdm.Text;
            int    admResult;
            bool   resultAdm = int.TryParse(this.txtIdAdm.Text, out admResult);
            int    idAdm     = admResult;

            bool   existeEnvio  = Controladora.Instancia.ExisteEnvio(nroEnvio);
            bool   existeAdm    = Controladora.Instancia.ExisteAdmin(idAdm);
            string nroOfiActual = this.dropDownOficinaActual.SelectedValue;

            if (existeAdm)
            {
                lblIdAdm.Text = "";
                //Si las fechas son validas
                if (resultFechaRec && Herramientas.FechaValida(fechaRec))
                {
                    lblFechaRec.Text = "";

                    if (resultFechaSal && Herramientas.FechaValida(fechaSal))
                    {
                        lblFechaSal.Text = "";

                        //Si ingreso un numero y existe el envio
                        if (resultNro && existeEnvio)
                        {
                            DesbloquearValores();
                            lblMensaje.Text  = "";
                            lblFechaRec.Text = "";
                            Envio   env       = Controladora.Instancia.BuscarEnvio(nroEnvio);
                            Oficina ofiActual = Controladora.Instancia.BuscarOficina(int.Parse(nroOfiActual));

                            //Creo una lista temporal con los recorridos de ese envio
                            List <Recorrido> listaTemporal = Controladora.Instancia.BuscarEnvio(nroEnvio).ListaRecorrido;
                            GridViewRastreoEnv.DataSource = listaTemporal;
                            GridViewRastreoEnv.DataBind();


                            //Si la oficina actual es igual a la de origen, no permitir
                            if (ofiActual.NroOficina == env.NroOfiOrig.NroOficina && env.Recorrido.Status != Envio.EstadoEnvios.Entregado &&
                                env.OficinaYaIngresada(ofiActual))
                            {
                                lblOficina.Text = "Debe seleccionar una oficina distinta a la de origen";
                            }
                            //Si la oficina actual no es la de origen ni la final, estado "En transito"
                            else if (ofiActual.NroOficina != env.NroOfiFinal.NroOficina && env.Recorrido.Status != Envio.EstadoEnvios.Entregado && !env.OficinaYaIngresada(ofiActual))
                            {
                                lblMensaje.Text = "";
                                lblOficina.Text = "";

                                Controladora.Instancia.ModificarEstado(nroEnvio, ofiActual, fechaRec, fechaSal);
                            }
                            //Si la oficina actual es igual a la de origen, estado "Para entregar"
                            else if (ofiActual.NroOficina == env.NroOfiFinal.NroOficina && env.Recorrido.Status != Envio.EstadoEnvios.Entregado &&
                                     !env.OficinaYaIngresada(ofiActual))
                            {
                                lblMensaje.Text = "";
                                lblOficina.Text = "";

                                Controladora.Instancia.ModificarEstado(nroEnvio, ofiActual, fechaRec, fechaSal);

                                cbEntregar.Enabled      = true;
                                txtReceptor.Enabled     = true;
                                FileUploadFirma.Enabled = true;
                            }
                            //Si no es ninguno de los casos, estado "Entregado"
                            if (cbEntregar.Checked && env.Recorrido.Status == Envio.EstadoEnvios.Para_entregar)
                            {
                                lblMensaje.Text = "";
                                string nombreRecep = txtReceptor.Text;
                                string ruta        = "";
                                string fotoFirma   = "";

                                if (txtReceptor.Text != "")
                                {
                                    lblReceptor.Text = "";
                                    if (this.FileUploadFirma.HasFile)
                                    {
                                        lblFirma.Text = "";
                                        string archivo = this.FileUploadFirma.FileName;
                                        ruta      = HttpRuntime.AppDomainAppPath + "/firma";
                                        fotoFirma = nroEnvio + archivo.Substring(archivo.LastIndexOf("."));

                                        if (Controladora.Instancia.EnvioEntregado(nroEnvio, ofiActual, fechaRec, fechaSal, nombreRecep, fotoFirma))
                                        {
                                            this.FileUploadFirma.SaveAs(ruta + fotoFirma);
                                        }
                                        else
                                        {
                                            if (env.NombreReceptor != nombreRecep)
                                            {
                                                lblReceptor.Text = "El receptor no es valido";
                                            }
                                        }
                                    }
                                    else
                                    {
                                        lblFirma.Text = "Debe seleccionar el archivo con la firma del receptor";
                                    }
                                }
                                else
                                {
                                    lblReceptor.Text = "Debe ingresar el nombre del receptor";
                                }
                            }


                            if (!cbEntregar.Checked && env.Recorrido.Status == Envio.EstadoEnvios.Para_entregar)
                            {
                                lblMensaje.Text = "Seleccione 'Entregar' para marcar un envio como entregado"; //Marcar checkbox
                            }

                            if (env.Recorrido.Status == Envio.EstadoEnvios.Entregado)
                            {
                                BloquearValores();
                                lblMensaje.Text = "No puede modificar un envio ya entregado, seleccione otro envio";
                                lblFirma.Text   = "";
                            }
                        }
                        else
                        {
                            lblMensaje.Text = "Numero de envio no valido";
                        }
                    }
                    else
                    {
                        lblFechaSal.Text = "Fecha no valida";
                    }
                }
                else
                {
                    lblFechaRec.Text = "Fecha no valida";
                }
            }
            else
            {
                lblIdAdm.Text = "No se encontro ese id de administrador";
            }
        }