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()); } }