Example #1
0
 public void AddConvenio(ExcelMasivoTarifario emt)
 {
     using (TransactionScope transactionScope = new TransactionScope())
     {
         if (emt != null)
         {
             ConveniosClienteTarifarioRepositorio conv = new ConveniosClienteTarifarioRepositorio();
             conv.Insert(emt);
             transactionScope.Complete();
         }
     }
 }
        public void ValidarConvenio(string cotizaCliente, string nombre, string usuario, string cotizacionClienteID)
        {
            log4net.Config.XmlConfigurator.ConfigureAndWatch(
                new FileInfo(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile));

            string CarpetaParaGuardar = "";

            CarpetaParaGuardar = Path.Combine(Server.MapPath("~/Archivos"), nombre); //Obtengo la posición del archivo
            HttpContext Contexto = HttpContext.Current;

            Logger.Info("Comenzando método ValidarConvenio. Parámetros: " + cotizaCliente + ", " + nombre + ", " + usuario + ", " + cotizacionClienteID);
            string str;
            string strSearch = "Redespacho";
            int    fCnt      = 0;
            int    cCnt      = 0;
            int    rw        = 0;
            int    cl        = 0;

            //string cpD = "";
            //string cpO = "";
            char[] splitParams = new char[] { '(', ')' };
            bool   pais        = false;
            //Session["ExcelTarifario"] = "";

            ExcelMasivoTarifario      emt   = new ExcelMasivoTarifario();     //emt = excel masivo tarifario
            IConveniosClientesDominio _conv = new ConveniosClientesDominio(); //_conv = convenio
            var        lemt = new List <ExcelMasivoTarifario>();              //lemt = listado excel masivo tarifario
            List <int> sess = new List <int>();

            List <OrigenDestinoSEL> listaOrgDst = new List <OrigenDestinoSEL>();
            List <TarifarioZonaSEL> listaTrZona = new List <TarifarioZonaSEL>();

            int ClienteID = Convert.ToInt32(_conv.GetClienteID(Convert.ToInt32(cotizacionClienteID)));

            #region try
            //Abro el archivo guardado y lo recorro para validar los datos
            try
            {
                //Support (http://spreadsheetlight.com)
                SLDocument            libro = new SLDocument(CarpetaParaGuardar);
                SLWorksheetStatistics stats = libro.GetWorksheetStatistics();

                Logger.Info("Iniciando try.");
                rw = stats.EndRowIndex;
                cl = stats.EndColumnIndex;

                Logger.Info("Filas: " + rw + ". Columnas: " + cl);
                #region Recorrido de datos
                if (cl == 8)
                {
                    for (fCnt = 2; fCnt <= rw; fCnt++)
                    {
                        emt = new ExcelMasivoTarifario();

                        for (cCnt = 1; cCnt <= cl; cCnt++)
                        {
                            str = libro.GetCellValueAsString(fCnt, cCnt);
                            str = str.Replace(",", " ");
                            str = str.Replace("'", " ");
                            str = str.Replace("º", " ");
                            str = str.Replace(Environment.NewLine, "");

                            switch (cCnt) //Aplico el control por cada fila y columna para validar los datos
                            {
                            case 1:       //Unidad de Venta
                                if (str != "")
                                {
                                    List <ConsUnidadVentaSEL> listaUV = new List <ConsUnidadVentaSEL>();
                                    listaUV = _conv.GetUnidadVenta(str);

                                    if (listaUV.Count >= 1)
                                    {
                                        foreach (ConsUnidadVentaSEL uv in listaUV)
                                        {
                                            emt.UnidadVentaID = uv.UnidadVentaID;
                                            emt.UnidadVenta   = uv.UnidadVentaDescrip;
                                        }
                                    }
                                    else
                                    {
                                        throw new ArgumentException("La Unidad de Venta no es la correcta. Columna: " + cCnt + " Fila: " + fCnt);
                                    }
                                }
                                else
                                {
                                    //emt.UnidadVenta = str;
                                    throw new ArgumentException("La celda se encuentra vacia. Columna: " + cCnt + " Fila: " + fCnt);
                                }
                                break;

                            case 2:     //Modalidad de Entrega
                                if (str != "")
                                {
                                    List <ModalidadEntregaSEL> listaME = new List <ModalidadEntregaSEL>();
                                    listaME = _conv.GetModalidadEntrega(str);

                                    if (listaME.Count >= 1)
                                    {
                                        foreach (ModalidadEntregaSEL me in listaME)
                                        {
                                            emt.ModalidadEntregaID = me.ModalidadEntregaID;
                                            emt.ModalidadEntrega   = me.ModalidadEntregaDescrip;

                                            emt.CotizacionClienteUVentaModalidadID = _conv.GetCotizacionClienteUVModalidad(Convert.ToInt32(cotizaCliente), me.ModalidadEntregaID);
                                        }
                                    }
                                    else
                                    {
                                        throw new ArgumentException("La Modalidad de Entrega no es la correcta. Columna: " + cCnt + " Fila: " + fCnt);
                                    }
                                }
                                else
                                {
                                    //emt.ModalidadEntrega = str;
                                    throw new ArgumentException("La celda se encuentra vacia. Columna: " + cCnt + " Fila: " + fCnt);
                                }
                                break;

                            case 3:     //Origen
                                if (str != "")
                                {
                                    string[] esAgrup_Loc = str.Split(splitParams, StringSplitOptions.RemoveEmptyEntries);

                                    if (esAgrup_Loc.Count() > 1)
                                    {
                                        if (esAgrup_Loc[1] == "Agrup.")
                                        {
                                            listaOrgDst.Clear();
                                            listaOrgDst = _conv.GetOrigenDestino(7, esAgrup_Loc[0], ClienteID, false);

                                            if (listaOrgDst.Count >= 1)
                                            {
                                                foreach (OrigenDestinoSEL od in listaOrgDst)
                                                {
                                                    emt.CodigoOrigen = od.ClienteOrigenDestinoID;
                                                    emt.TipoOrigenID = 7;
                                                }
                                            }
                                            else
                                            {
                                                throw new ArgumentException("La Agrupación Origen no es correcta. Columna: " + cCnt + " Fila: " + fCnt);
                                            }
                                        }

                                        else if (esAgrup_Loc[1] == "Loc")
                                        {
                                            listaOrgDst.Clear();
                                            listaOrgDst = _conv.GetOrigenDestino(3, esAgrup_Loc[0], ClienteID, false);

                                            if (listaOrgDst.Count >= 1)
                                            {
                                                foreach (OrigenDestinoSEL od in listaOrgDst)
                                                {
                                                    emt.CodigoOrigen = od.ClienteOrigenDestinoID;
                                                    emt.TipoOrigenID = 3;
                                                }
                                            }
                                            else
                                            {
                                                throw new ArgumentException("La Localidad Origen no es correcta. Columna: " + cCnt + " Fila: " + fCnt);
                                            }
                                        }

                                        else if (esAgrup_Loc[1] == "ZONA")
                                        {
                                            List <ZonaOrigenDestinoSEL> listaZona = new List <ZonaOrigenDestinoSEL>();
                                            listaZona = _conv.GetZonaUV(ClienteID, esAgrup_Loc[0].ToString());

                                            if (listaZona.Count() > 0)
                                            {
                                                foreach (ZonaOrigenDestinoSEL lz in listaZona)
                                                {
                                                    emt.ClienteZonaID = lz.ClienteZonaID;
                                                }
                                            }
                                            else
                                            {
                                                throw new ArgumentException("La Localidad Origen no es correcta. Columna: " + cCnt + " Fila: " + fCnt);
                                            }
                                        }

                                        else if (esAgrup_Loc[0].Contains(strSearch.ToUpper()))     //Busco por Redespacho
                                        {
                                            string unionZonaD = str.Remove(str.Length - 7).TrimEnd();

                                            listaOrgDst.Clear();
                                            listaOrgDst = _conv.GetOrigenDestino(6, unionZonaD, ClienteID, true);

                                            if (listaOrgDst.Count >= 1)
                                            {
                                                foreach (OrigenDestinoSEL od in listaOrgDst)
                                                {
                                                    emt.CodigoDestino = od.ClienteOrigenDestinoID;
                                                    emt.TipoDestinoID = 6;
                                                }
                                            }
                                            else
                                            {
                                                throw new ArgumentException("El Redespacho Destino no es correcto. Columna: " + cCnt + " Fila: " + fCnt);
                                            }
                                        }

                                        else
                                        {
                                            listaOrgDst.Clear();
                                            listaOrgDst = _conv.GetOrigenDestino(4, esAgrup_Loc[0], ClienteID, false);

                                            if (listaOrgDst.Count >= 1)
                                            {
                                                foreach (OrigenDestinoSEL od in listaOrgDst)
                                                {
                                                    emt.CodigoOrigen = od.ClienteOrigenDestinoID;
                                                    emt.TipoOrigenID = 4;
                                                }
                                            }
                                            else
                                            {
                                                throw new ArgumentException("La Provincia Origen no es el correcta. Columna: " + cCnt + " Fila: " + fCnt);
                                            }
                                        }
                                    }
                                    else
                                    {
                                        listaOrgDst.Clear();
                                        if (esAgrup_Loc[0] == "Argentina")
                                        {
                                            pais        = true;
                                            listaOrgDst = _conv.GetOrigenDestino(5, esAgrup_Loc[0], ClienteID, false);
                                        }
                                        else
                                        {
                                            listaOrgDst = _conv.GetOrigenDestino(4, esAgrup_Loc[0], ClienteID, false);
                                        }

                                        if (listaOrgDst.Count >= 1)
                                        {
                                            foreach (OrigenDestinoSEL od in listaOrgDst)
                                            {
                                                emt.CodigoOrigen = od.ClienteOrigenDestinoID;
                                                if (pais)
                                                {
                                                    pais             = false;
                                                    emt.TipoOrigenID = 5;
                                                }
                                                else
                                                {
                                                    emt.TipoOrigenID = 4;
                                                }
                                            }
                                        }
                                        else
                                        {
                                            throw new ArgumentException("La Provincia Origen no es el correcta. Columna: " + cCnt + " Fila: " + fCnt);
                                        }
                                    }
                                }
                                else
                                {
                                    throw new ArgumentException("La celda se encuentra vacia. Columna: " + cCnt + " Fila: " + fCnt);
                                }

                                break;

                            case 4:     //Destino
                                if (str != "")
                                {
                                    string[] esAgrup_Loc = str.Split(splitParams, StringSplitOptions.RemoveEmptyEntries);

                                    if (esAgrup_Loc.Count() > 1)
                                    {
                                        if (esAgrup_Loc[1] == "Agrup.")
                                        {
                                            listaOrgDst.Clear();
                                            listaOrgDst = _conv.GetOrigenDestino(7, esAgrup_Loc[0], ClienteID, true);

                                            if (listaOrgDst.Count >= 1)
                                            {
                                                foreach (OrigenDestinoSEL od in listaOrgDst)
                                                {
                                                    emt.CodigoDestino = od.ClienteOrigenDestinoID;
                                                    emt.TipoDestinoID = 7;
                                                }
                                            }
                                            else
                                            {
                                                throw new ArgumentException("La Agrupación Destino no es correcta. Columna: " + cCnt + " Fila: " + fCnt);
                                            }
                                        }

                                        else if (esAgrup_Loc[1] == "Loc")
                                        {
                                            listaOrgDst.Clear();
                                            listaOrgDst = _conv.GetOrigenDestino(3, esAgrup_Loc[0], ClienteID, true);

                                            if (listaOrgDst.Count >= 1)
                                            {
                                                foreach (OrigenDestinoSEL od in listaOrgDst)
                                                {
                                                    emt.CodigoDestino = od.ClienteOrigenDestinoID;
                                                    emt.TipoDestinoID = 3;
                                                }
                                            }
                                            else
                                            {
                                                throw new ArgumentException("La Localidad Destino no es correcta. Columna: " + cCnt + " Fila: " + fCnt);
                                            }
                                        }

                                        else if (esAgrup_Loc[1] == "ZONA")
                                        {
                                            List <ZonaOrigenDestinoSEL> listaZona = new List <ZonaOrigenDestinoSEL>();
                                            listaZona = _conv.GetZonaUV(ClienteID, esAgrup_Loc[0].ToString());

                                            if (listaZona.Count() > 0)
                                            {
                                                foreach (ZonaOrigenDestinoSEL lz in listaZona)
                                                {
                                                    emt.ClienteZonaID = lz.ClienteZonaID;
                                                }
                                            }
                                            else
                                            {
                                                throw new ArgumentException("La Localidad Destino no es correcta. Columna: " + cCnt + " Fila: " + fCnt);
                                            }
                                        }

                                        else if (esAgrup_Loc[0].Contains(strSearch.ToUpper()))     //Busco por Redespacho
                                        {
                                            string unionZonaD = str.Remove(str.Length - 7).TrimEnd();

                                            listaOrgDst.Clear();
                                            listaOrgDst = _conv.GetOrigenDestino(6, unionZonaD, ClienteID, true);

                                            if (listaOrgDst.Count >= 1)
                                            {
                                                foreach (OrigenDestinoSEL od in listaOrgDst)
                                                {
                                                    emt.CodigoDestino = od.ClienteOrigenDestinoID;
                                                    emt.TipoDestinoID = 6;
                                                }
                                            }
                                            else
                                            {
                                                throw new ArgumentException("El Redespacho Destino no es correcto. Columna: " + cCnt + " Fila: " + fCnt);
                                            }
                                        }

                                        else
                                        {
                                            listaOrgDst.Clear();
                                            listaOrgDst = _conv.GetOrigenDestino(4, esAgrup_Loc[0], ClienteID, true);

                                            if (listaOrgDst.Count >= 1)
                                            {
                                                foreach (OrigenDestinoSEL od in listaOrgDst)
                                                {
                                                    emt.CodigoDestino = od.ClienteOrigenDestinoID;
                                                    emt.TipoDestinoID = 4;
                                                }
                                            }
                                            else
                                            {
                                                throw new ArgumentException("La Provincia Destino no es el correcta. Columna: " + cCnt + " Fila: " + fCnt);
                                            }
                                        }
                                    }
                                    else
                                    {
                                        listaOrgDst.Clear();
                                        if (esAgrup_Loc[0] == "Argentina")
                                        {
                                            pais        = true;
                                            listaOrgDst = _conv.GetOrigenDestino(5, esAgrup_Loc[0], ClienteID, true);
                                        }
                                        else
                                        {
                                            listaOrgDst = _conv.GetOrigenDestino(4, esAgrup_Loc[0], ClienteID, true);
                                        }

                                        if (listaOrgDst.Count >= 1)
                                        {
                                            foreach (OrigenDestinoSEL od in listaOrgDst)
                                            {
                                                emt.CodigoDestino = od.ClienteOrigenDestinoID;
                                                if (pais)
                                                {
                                                    pais             = false;
                                                    emt.TipoOrigenID = 5;
                                                }
                                                else
                                                {
                                                    emt.TipoDestinoID = 4;
                                                }
                                            }
                                        }
                                        else
                                        {
                                            throw new ArgumentException("La Provincia Destino no es el correcta. Columna: " + cCnt + " Fila: " + fCnt);
                                        }
                                    }
                                }
                                else
                                {
                                    throw new ArgumentException("La celda se encuentra vacia. Columna: " + cCnt + " Fila: " + fCnt);
                                }
                                break;

                            case 5:     //Tarifario
                                if (str != "")
                                {
                                    string[] esTarifario = str.Split(splitParams, StringSplitOptions.RemoveEmptyEntries);

                                    if (esTarifario.Count() > 1)
                                    {
                                        if (esTarifario[1] == "PART.Esp.")
                                        {
                                            List <TarifarioEspecificoSEL> listaTrEsp = new List <TarifarioEspecificoSEL>();
                                            listaTrEsp = _conv.GetTarifarioEspecifico(esTarifario[0]);

                                            if (listaTrEsp.Count >= 1)
                                            {
                                                foreach (TarifarioEspecificoSEL te in listaTrEsp)
                                                {
                                                    emt.TarifarioEspecificoID = te.TarifarioClienteFleteID;
                                                    emt.TarifarioEspecifico   = te.TarifarioClienteFleteDescrip;
                                                }
                                            }
                                            else
                                            {
                                                throw new ArgumentException("El Tarifario Específico no es el correcto. Columna: " + cCnt + " Fila: " + fCnt);
                                            }
                                        }
                                        else if (esTarifario[1] == "PART. Zonas")
                                        {
                                            listaTrZona = _conv.GetTarifarioZona(esTarifario[0]);

                                            if (listaTrZona.Count >= 1)
                                            {
                                                foreach (TarifarioZonaSEL tz in listaTrZona)
                                                {
                                                    emt.TarifarioZonasID = tz.TarifarioFleteID;
                                                    emt.TarifarioZonas   = tz.TarifarioFleteDescrip;
                                                }
                                            }
                                            else
                                            {
                                                throw new ArgumentException("El Tarifario por Zonas no es el correcto. Columna: " + cCnt + " Fila: " + fCnt);
                                            }
                                        }
                                        else if (esTarifario[1] == "Estand.")
                                        {
                                            listaTrZona = _conv.GetTarifarioZona(esTarifario[0]);

                                            if (listaTrZona.Count >= 1)
                                            {
                                                foreach (TarifarioZonaSEL tz in listaTrZona)
                                                {
                                                    emt.TarifarioEstandarizadoID = tz.TarifarioFleteID;
                                                    emt.TarifarioEstandarizado   = tz.TarifarioFleteDescrip;
                                                }
                                            }
                                            else
                                            {
                                                throw new ArgumentException("El Tarifario Estandarizado no es el correcto. Columna: " + cCnt + " Fila: " + fCnt);
                                            }
                                        }
                                        else if (esTarifario[1] == "Redesp.")
                                        {
                                            List <TarifarioRedespachoSEL> listaRedesp = new List <TarifarioRedespachoSEL>();
                                            listaRedesp = _conv.GetTarifarioRedespacho(esTarifario[0]);

                                            if (listaRedesp.Count >= 1)
                                            {
                                                foreach (TarifarioRedespachoSEL tr in listaRedesp)
                                                {
                                                    emt.TarifarioRedespachoID = tr.TarifarioVentaReDespachoID;
                                                    emt.TarifarioRedespacho   = tr.TarifarioVentaReDespachoDescrip;
                                                }
                                            }
                                            else
                                            {
                                                throw new ArgumentException("El Tarifario Redespacho no es el correcto. Columna: " + cCnt + " Fila: " + fCnt);
                                            }
                                        }
                                    }
                                    else
                                    {
                                        throw new ArgumentException("El Tarifario utilizado no expecifica a ningún tarifario.");
                                    }
                                }
                                else
                                {
                                    //emt.TarifarioEspecifico = str;
                                    throw new ArgumentException("La celda se encuentra vacia. Columna: " + cCnt + " Fila: " + fCnt);
                                }
                                break;

                            case 6:
                                break;

                            case 7:
                                break;

                            case 8:
                                break;
                            }
                        }
                        #endregion

                        lemt.Add(emt);
                    }

                    foreach (var em in lemt) //Guardo cada convenio por separado
                    {
                        em.NombreExcel = nombre;
                        em.UsuarioID   = Convert.ToInt32(usuario);
                        _conv.AddConvenio(em);
                        sess.Add(em.ExcelMasivoTarifarioID);
                    }

                    Session["ExcelTarifario"] = sess;
                }
                else
                {
                    throw new ArgumentException("La Cantidad de Columnas no son correctas");
                }

                lemt.Clear();
                Logger.Info("Finalizado correctamente.");
            }
            catch (Exception ex)
            {
                Contexto.Response.ContentType = "application/json";
                Contexto.Response.Write("{\"error\":false,\"msg\":\"" + ex.Message.ToString() + "\"}");
                Logger.Error("Error: " + ex.Message.ToString());
            }
        }