protected void btnRetencion_Click(object sender, EventArgs e)
        {
            lblMensaje.Text             = "";
            lblMensaje.Visible          = false;
            this.trMensajeError.Visible = false;

            string GuiasError = "";
            int    cant       = 0;


            IGuiasSolicitudConfirmacionTurnoDominio _guiasDominio = IoC.GetObjectDominio <IGuiasSolicitudConfirmacionTurnoDominio>();

            List <Int32?> lstDatosIngresados = new List <Int32?>();//datos ya cargados
            List <Dominio.Entidades.ClienteSolicitaTurno> _datosCliente = new List <Dominio.Entidades.ClienteSolicitaTurno>();
            DsDatosMailTurnos dst = new DsDatosMailTurnos();

            usuario = (IUsuarios)Session["usuario"];                             //cargo el usuario
            cant    = Utiles.Validaciones.obtieneEntero(this.txtGuiaIndex.Text); //la cantidad de guias cargadas

            try
            {
                if (cant == 0)
                {
                    throw new Exception("Debe ingresar al menos una guia, para realizar una retención");
                }
                else
                {
                    for (int i = 0; i < cant; i++)
                    {
                        string txt        = "txt" + i;                                 //cargo el numero de la guia
                        string ddl        = "ddl" + i.ToString();
                        string txtNroCaso = "txtnroCaso2" + i.ToString();              //cargo el numero de caso

                        string txtDetalleUsuario = "txtDetalleUsuario" + i.ToString(); //cargo el detalle ingresado
                        string observacionManual = "txtDetalleUsuarioManual" + i.ToString();
                        string Nrocaso           = Request.Form[txtNroCaso].ToString();
                        string nroGuia           = Request.Form[txt].ToString();

                        string ObDetalle = Request.Form[txtDetalleUsuario].ToString();
                        string ObservacionManualUsuario = Request.Form[observacionManual].ToString();


                        string tGuia = "";

                        //separo el numero de la guia
                        tGuia = NegociosSisPackInterface.SisPack.TipoGuia(nroGuia.Substring(0, 1));
                        string nroSucursal = nroGuia.Substring(1, 4);
                        string nGuia       = nroGuia.Substring(5);

                        //traigo el guiaid
                        IGuia oGuia = GuiaFactory.GetGuia();
                        oGuia.NroGuia         = Utiles.Validaciones.obtieneEntero(nGuia);
                        oGuia.NroSucursalGuia = nroSucursal;
                        oGuia.TipoGuia        = tGuia;
                        oGuia.Consultar();

                        //cargo el guiaid para guardar en una tabla para que ya se sepa que guia se pidio turno
                        guiaidST = oGuia.GuiaID;

                        try{
                            Convert.ToInt32(ObDetalle);
                        }
                        catch {
                            ObDetalle = "0";
                        }//Esto es para el caso que no ingresen numero
                         //valida la observacion
                         //ValidaaObservacionTRF


                        int EsObservacion = Convert.ToInt32(_guiasDominio.ValidaObservacionTRF(Convert.ToInt32(ObDetalle)));

                        if (EsObservacion == 1)    //quiere decir que si existe la observacion ingresada
                        {
                            //valida que este en estado en destino para que se pueda solicitar turno y que sea de la agencia
                            if (_guiasDominio.ValidaGuia(guiaidST) == "PendienteDeEntrega" || _guiasDominio.ValidaGuia(guiaidST) == "EnDestino")//trae los estados en destino o pedneinte de entrega
                            {
                                if (_guiasDominio.GuiaRetenidaEstados(guiaidST) == 1)
                                {//se puede retener
                                    IAgencia ag = AgenciaFactory.GetAgencia();
                                    ag.AgenciaID = this.AgenciaConectadaID;
                                    ag.Consultar();

                                    if (oGuia.AgenciaDestinoID != ag.AgenciaID)
                                    {//por si se intenta solicitar turno de una agencia la cual
                                        //no es el destino real.
                                        if (GuiasError == "")
                                        {
                                            GuiasError = tGuia + "-" + nroSucursal + "-" + nGuia;
                                        }
                                        else
                                        {
                                            GuiasError = GuiasError + tGuia + "-" + nroSucursal + "-" + nGuia;
                                        }
                                    }
                                }
                                else
                                {//la guia ya tiene un turno, o no se encuentra en el estado correspondiente
                                    //para solicitar turno.
                                    if (GuiasError == "")
                                    {
                                        GuiasError = tGuia + "-" + nroSucursal + "-" + nGuia;
                                    }
                                    else
                                    {
                                        GuiasError = GuiasError + tGuia + "-" + nroSucursal + "-" + nGuia;
                                    }
                                }

                                if (GuiasError == "")
                                {
                                    try
                                    {
                                        //guarda en la tabla de guias retenidas retencion
                                        //el clienteid va en 0, porque se penso guardar por cliente por las dudas, pero dp se cambio Fquiroga
                                        Int32?datos = _guiasDominio.InsertarGuiaEnRetencion(guiaidST, 0, Nrocaso, usuario.UsuarioID, ObDetalle, ObservacionManualUsuario);
                                        lstDatosIngresados.Add(datos);
                                    }
                                    catch (Exception ex)
                                    {
                                        ((ErrorWeb)(this.phErrores.Controls[0])).setMensaje((ex.Message));
                                    }
                                }
                            }
                            else
                            {
                                GuiasError = GuiasError + tGuia + "-" + nroSucursal + "-" + nGuia;
                            }
                        }
                        else
                        {
                            GuiasError = GuiasError + tGuia + "-" + nroSucursal + "-" + nGuia + "Código de Observación Incorrecto";//no existe la observacion ingresada
                        }
                    }//termina de ver las guias que estan cargando


                    if (GuiasError == "")//si alguna guia tiene algun error
                    {
                        this.txtGuiaIndex.Text = "0";

                        string scriptString = "<script language=JavaScript>\n";
                        scriptString += "alert('Retención Exitosa');\n";
                        scriptString += "</script>";
                        Page.RegisterStartupScript("scrip", scriptString);
                    }
                    else
                    {
                        this.txtGuiaIndex.Text      = "0";
                        lblMensaje.Text             = "Las siguientes guias tienen problemas para ser retenidas: " + GuiasError;
                        lblMensaje.Visible          = true;
                        this.trMensajeError.Visible = true;
                    }
                }
            }
            catch (Exception ex)
            {
                ((ErrorWeb)(this.phErrores.Controls[0])).setMensaje((ex.Message));
            }
        }
Exemple #2
0
        protected void btnSolicitud_Click(object sender, EventArgs e)
        {
            lblMensaje.Text             = "";
            lblMensaje.Visible          = false;
            this.trMensajeError.Visible = false;

            string GuiasError = "";
            int    cant       = 0;

            DataTable dt = new DataTable();//data table para que vaya cargando todas las guias con todos los mails repetidos

            dt.Columns.Add("GuiaID");
            dt.Columns.Add("Email");
            dt.Columns.Add("Observa");
            dt.Columns.Add("NroCaso");

            dt.Clear();//limpia los datos por las dudas que haya salido un error. para que los vuelva a cargar
            string EmailEnvia = txtMailGenerico.Text;
            string pass       = txtPass.Text;

            if (EmailEnvia == "")
            {//mail que va a responder el cliente
                ((ErrorWeb)this.phErrores.Controls[0]).setMensaje("Falta ingresa el mail al cual el cliente va a responder la solicitud del turno. ");
                return;
            }
            if (pass == "")
            {//mail que va a responder el cliente
                ((ErrorWeb)this.phErrores.Controls[0]).setMensaje("Falta ingresa  la contraseña del mail ingresado.");
                return;
            }

            IGuiasSolicitudConfirmacionTurnoDominio _guiasDominio = IoC.GetObjectDominio <IGuiasSolicitudConfirmacionTurnoDominio>();

            List <Int32?> lstDatosIngresados = new List <Int32?>();//datos ya cargados
            List <Dominio.Entidades.ClienteSolicitaTurno> _datosCliente = new List <Dominio.Entidades.ClienteSolicitaTurno>();
            DsDatosMailTurnos dst = new DsDatosMailTurnos();

            usuario = (IUsuarios)Session["usuario"];                          //cargo el usuario

            cant = Utiles.Validaciones.obtieneEntero(this.txtGuiaIndex.Text); //la cantidad de guias cargadas
            List <string> lstemail = new List <string>();

            try
            {
                if (cant == 0)
                {
                    throw new Exception("Debe ingresar al menos una guia, para solicitar turnos");
                }
                else
                {
                    for (int i = 0; i < cant; i++)
                    {
                        string txt               = "txt" + i;                          //cargo el numero de la guia
                        string ddl               = "ddl" + i.ToString();
                        string txtNroCaso        = "txtnroCaso2" + i.ToString();       //cargo el numero de caso
                        string txtMailCliente    = "txtMailCliente" + i.ToString();    //cargo el mail ingresado
                        string txtDetalleUsuario = "txtDetalleUsuario" + i.ToString(); //cargo el detalle ingresado

                        string   Nrocaso   = Request.Form[txtNroCaso].ToString();
                        string   nroGuia   = Request.Form[txt].ToString();
                        string   Email     = Request.Form[txtMailCliente].ToString();
                        string   ObDetalle = Request.Form[txtDetalleUsuario].ToString();
                        string[] separadas;
                        separadas = Email.Split(';');

                        string tGuia = "";



                        //separo el numero de la guia
                        tGuia = NegociosSisPackInterface.SisPack.TipoGuia(nroGuia.Substring(0, 1));
                        string nroSucursal = nroGuia.Substring(1, 4);
                        string nGuia       = nroGuia.Substring(5);

                        //traigo el guiaid
                        IGuia oGuia = GuiaFactory.GetGuia();
                        oGuia.NroGuia         = Utiles.Validaciones.obtieneEntero(nGuia);
                        oGuia.NroSucursalGuia = nroSucursal;
                        oGuia.TipoGuia        = tGuia;
                        oGuia.Consultar();

                        //cargo el guiaid para guardar en una tabla para que ya se sepa que guia se pidio turno
                        guiaidST = oGuia.GuiaID;
                        //valida que este en estado en destino para que se pueda solicitar turno y que sea de la agencia
                        if (_guiasDominio.ValidaGuia(guiaidST) == "PendienteDeEntrega" || _guiasDominio.ValidaGuia(guiaidST) == "EnDestino")//trae los estados en destino o pedneinte de entrega
                        {
                            IAgencia ag = AgenciaFactory.GetAgencia();
                            ag.AgenciaID = this.AgenciaConectadaID;
                            ag.Consultar();

                            if (oGuia.AgenciaDestinoID != ag.AgenciaID)
                            {//por si se intenta solicitar turno de una agencia la cual
                                //no es el destino real.
                                if (GuiasError == "")
                                {
                                    GuiasError = tGuia + "-" + nroSucursal + "-" + nGuia;
                                }
                                else
                                {
                                    GuiasError = GuiasError + tGuia + "-" + nroSucursal + "-" + nGuia;
                                }
                            }
                        }
                        else
                        {//la guia ya tiene un turno, o no se encuentra en el estado correspondiente
                            //para solicitar turno.
                            if (GuiasError == "")
                            {
                                GuiasError = tGuia + "-" + nroSucursal + "-" + nGuia;
                            }
                            else
                            {
                                GuiasError = GuiasError + tGuia + "-" + nroSucursal + "-" + nGuia;
                            }
                        }

                        if (GuiasError == "")
                        {
                            //si no tiene error lo que cargan que se agregue en la tabla e inserte los datos
                            //carga las guias y los mails
                            for (int im = 0; im < separadas.Count(); im++)
                            {
                                dst.Datos.AddDatosRow(Convert.ToString(guiaidST), separadas[im].ToString(), Nrocaso, ObDetalle);

                                try { _guiasDominio.DatosTurnosINS(guiaidST, separadas[im].ToString(), usuario.UsuarioID); }
                                catch { }


                                DataRow row2 = dt.NewRow();
                                if (!lstemail.Contains(separadas[im].ToString()))
                                {
                                    lstemail.Add(separadas[im].ToString());
                                }
                            }
                            try
                            {
                                //guarda en la tabla de pedido de turno
                                //el clienteid va en 0, porque se penso guardar por cliente por las dudas, pero dp se cambio Fquiroga
                                Int32?datos = _guiasDominio.InsertarSolictudDeTurno(guiaidST, 0, Nrocaso, usuario.UsuarioID, ObDetalle);
                                lstDatosIngresados.Add(datos);
                            }
                            catch (Exception ex)
                            {
                                ((ErrorWeb)(this.phErrores.Controls[0])).setMensaje((ex.Message));
                            }
                        }
                    }//termina de ver las guias que estan cargando

                    if (lstDatosIngresados.Count() > 0)//es para que no envie mail si no se inserto ningun dato
                    {
                        for (int em = 0; em < lstemail.Count(); em++)
                        {//recorre los mails cargados
                            string GuiaID        = "";
                            string observaciones = "";
                            string NroCaso       = "";
                            for (int da = 0; da < dst.Datos.Count; da++)//recore el ds que tiene todos los mails con las guias
                            {
                                if (dst.Datos[da].Email == lstemail[em].ToString())
                                { //compara si es el mismo mail
                                    //si es guarda las guias que tiene ese mail
                                    if (GuiaID == "")
                                    {
                                        GuiaID = dst.Datos[da].GuiaID;
                                    }
                                    else
                                    {
                                        GuiaID = GuiaID + "," + dst.Datos[da].GuiaID;
                                    }
                                    observaciones = dst.Datos[da].Observacion;
                                    NroCaso       = dst.Datos[da].NroCaso;
                                }
                            }
                            DataRow row2 = dt.NewRow();
                            row2["GuiaID"]  = Convert.ToString(GuiaID);
                            row2["Email"]   = lstemail[em].ToString();
                            row2["Observa"] = observaciones;
                            row2["NroCaso"] = NroCaso;

                            dt.Rows.Add(row2);
                        }

                        //para realizar el envio de mail
                        //envia la tabla con todos los datos separados por mail. Para que no se envie mas de un mail por mail. Fquiroga
                        try
                        {
                            IUsuarios usu = UsuariosFactory.GetUsuario();
                            usu.MandarMailClientesFechaEntrega(dt, EmailEnvia, pass);
                        }
                        catch
                        {
                            throw new Exception("Contraseña o Mail mal ingresado.");
                        }
                    }


                    if (GuiasError == "")//si alguna guia tiene algun error
                    {
                        this.txtGuiaIndex.Text = "0";


                        string scriptString = "<script language=JavaScript>\n";
                        scriptString += "alert('Solicitud de Turno Exitosamente');\n";
                        scriptString += "</script>";
                        Page.RegisterStartupScript("scrip", scriptString);
                    }
                    else
                    {
                        this.txtGuiaIndex.Text      = "0";
                        lblMensaje.Text             = "Las siguientes guias tienen problemas para solicitar turnos: " + GuiasError;
                        lblMensaje.Visible          = true;
                        this.trMensajeError.Visible = true;
                    }
                }
            }
            catch (Exception ex)
            {
                ((ErrorWeb)(this.phErrores.Controls[0])).setMensaje((ex.Message));
            }
        }