//public EdiController(EdiDBContext _DbO) { DbO = _DbO; } public EdiController(EdiDBContext _DbO, WmsContext _WmsDb, IConfiguration _Config) { DbO = _DbO; WmsDb = _WmsDb; Config = _Config; WmsDb.Database.SetCommandTimeout(TimeSpan.FromMinutes(2)); }
public bool Ping(ref EdiDBContext _DbO) { try { CheckMaxEdiComs(ref _DbO, MaxEdiComs); ftpRequest = UseHost2? (FtpWebRequest)WebRequest.Create(host2 + "/" + DirIn):(FtpWebRequest)WebRequest.Create(host + "/" + DirIn); ftpRequest.Credentials = new NetworkCredential(user, pass); ftpRequest.UseBinary = true; ftpRequest.UsePassive = true; ftpRequest.KeepAlive = true; ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory; ftpResponse = (FtpWebResponse)ftpRequest.GetResponse(); ftpResponse.Close(); ftpRequest = null; AddComLog(ref _DbO, Id, $"Ping hacía ftp {(UseHost2 ? host2 : host)} correcto"); return(true); } catch (WebException we1) { if (we1.Message.Contains("File unavailable")) { AddComLog(ref _DbO, Id, $"Ping hacía ftp {(UseHost2 ? host2 : host)} correcto"); return(true); } else { AddComLog(ref _DbO, Id, $"No se puede comunicar con el ftp {(UseHost2 ? host2 : host)}. Info: {we1.ToString()}"); return(false); } } catch (Exception ex) { AddComLog(ref _DbO, Id, $"No se puede comunicar con el ftp {(UseHost2 ? host2 : host)}. Info: {ex.ToString()}"); return(false); } }
public CboController(EdiDBContext _DbO, EdiDBContext _DbOL, WmsContext _WmsDbO, WmsContext _WmsDbOLong, IConfiguration _Config) { DbO = _DbO; DbOLong = _DbOL; WmsDbO = _WmsDbO; WmsDbOLong = _WmsDbOLong; Config = _Config; DbO.Database.SetCommandTimeout(TimeSpan.FromMinutes(2)); DbOLong.Database.SetCommandTimeout(TimeSpan.FromMinutes(10)); WmsDbO.Database.SetCommandTimeout(TimeSpan.FromMinutes(4)); WmsDbOLong.Database.SetCommandTimeout(TimeSpan.FromMinutes(10)); }
public static void AddComLog(ref EdiDBContext _DbO, string _Type, string _Log) { try { _DbO.EdiComs.Add(new EdiComs() { Type = _Type, Freg = DateTime.Now.ToString(ApplicationSettings.DateTimeFormat), Log = _Log }); _DbO.SaveChanges(); } catch { } }
public static void CheckMaxEdiComs(ref EdiDBContext _DbO, object _MaxEdiComs) { try { if (_DbO.EdiComs.Count() > Convert.ToInt32(_MaxEdiComs)) { foreach (EdiComs EdiComO in _DbO.EdiComs) { _DbO.EdiComs.Remove(EdiComO); } } } catch { } }
public void Put(string _EdiStr, ref EdiDBContext _DbO, string Tipo) { try { string FtpFile = EdiBase.GetHashId(); StreamWriter Sw = new StreamWriter(FtpFile, false); Sw.Write(_EdiStr); Sw.Close(); CheckMaxEdiComs(ref _DbO, MaxEdiComs); ftpRequest = UseHost2 ? (FtpWebRequest)WebRequest.Create($"{host2}/{DirOut}/{FtpFile}") : (FtpWebRequest)WebRequest.Create($"{host}/{DirOut}/{FtpFile}"); ftpRequest.Credentials = new NetworkCredential(user, pass); ftpRequest.UseBinary = true; ftpRequest.UsePassive = true; ftpRequest.KeepAlive = true; ftpRequest.Method = WebRequestMethods.Ftp.UploadFile; ftpStream = ftpRequest.GetRequestStream(); FileStream localFileStream = new FileStream(FtpFile, FileMode.Open); byte[] byteBuffer = new byte[bufferSize]; int bytesSent = localFileStream.Read(byteBuffer, 0, bufferSize); try { while (bytesSent != 0) { ftpStream.Write(byteBuffer, 0, bytesSent); bytesSent = localFileStream.Read(byteBuffer, 0, bufferSize); } AddComLog(ref _DbO, Id, $"Archivo enviado en {(UseHost2 ? host2 : host)}. Tipo: {Tipo}"); } catch (Exception ex) { AddComLog(ref _DbO, Id, $"Error al procesar el archivo en {(UseHost2 ? host2 : host)}. Info: {ex.ToString()}. Tipo: {Tipo}"); } localFileStream.Close(); ftpStream.Close(); ftpRequest = null; File.Delete(FtpFile); } catch (Exception ex) { AddComLog(ref _DbO, Id, $"Error relacionado con la conexión de {(UseHost2 ? host2 : host)}. Info: {ex.ToString()}. Tipo: {Tipo}"); } return; }
public LearRep830(ref EdiDBContext _DbO, ref Models.WmsDB.WmsContext _WmsDB) { DbO = _DbO; WmsDb = _WmsDB; }
public void SaveAll856(ref EdiDBContext _DbO) { try { ApplicationSettings.SavedSegments++; Validate(); switch (GetType().GetField("Init").GetRawConstantValue()) { case ISA856.Init: LearRep856.LearIsa856root = Reflect(new LearIsa856()); _DbO.LearIsa856.Add(LearRep856.LearIsa856root); break; case BSN856.Init: _DbO.LearBsn856.Add(Reflect(new LearBsn856())); break; case CLD856.Init: _DbO.LearCld856.Add(Reflect(new LearCld856())); break; case CTT856.Init: _DbO.LearCtt856.Add(Reflect(new LearCtt856())); break; case DTM856.Init: _DbO.LearDtm856.Add(Reflect(new LearDtm856())); break; case ETD856.Init: _DbO.LearEtd856.Add(Reflect(new LearEtd856())); break; //case GE856.Init: // break; case GS856.Init: _DbO.LearGs856.Add(Reflect(new LearGs856())); break; case HLOL856.Init: if (this.GetType().Name == "HLOL856") { _DbO.LearHlol856.Add(Reflect(new LearHlol856())); } else { _DbO.LearHlsl856.Add(Reflect(new LearHlsl856())); } break; //case IEA856.Init: // _DbO.LearI // break; case LIN856.Init: _DbO.LearLin856.Add(Reflect(new LearLin856())); break; case MEA856.Init: _DbO.LearMea856.Add(Reflect(new LearMea856())); break; case N1856.Init: _DbO.LearN1856.Add(Reflect(new LearN1856())); break; case PRF856.Init: _DbO.LearPrf856.Add(Reflect(new LearPrf856())); break; case REF856.Init: _DbO.LearRef856.Add(Reflect(new LearRef856())); break; //case SE856.Init: // _DbO.LearSE // break; case SN1856.Init: _DbO.LearSn1856.Add(Reflect(new LearSn1856())); break; case ST856.Init: _DbO.LearSt856.Add(Reflect(new LearSt856())); break; case TD1856.Init: _DbO.LearTd1856.Add(Reflect(new LearTd1856())); break; case TD3856.Init: _DbO.LearTd3856.Add(Reflect(new LearTd3856())); break; case TD5856.Init: _DbO.LearTd5856.Add(Reflect(new LearTd5856())); break; default: break; } _DbO.SaveChanges(); } catch (Exception eFb1) { throw new Exception($"Error al guardar {GetType().GetField("Init").GetRawConstantValue() } {eFb1.ToString()}. Error en linea {EdiStr}"); } foreach (EdiBase ChildO in this.Childs) { ChildO.SaveAll856(ref _DbO); } }
public void SaveAll830(ref EdiDBContext _DbO) { try { ApplicationSettings.SavedSegments++; Validate(); switch (GetType().GetField("Init").GetRawConstantValue()) { case ISA830.Init: LearRep830.LearIsa830root = Reflect(new LearIsa830()); _DbO.LearIsa830.Add(LearRep830.LearIsa830root); break; case GS830.Init: _DbO.LearGs830.Add(Reflect(new LearGs830())); break; case ST830.Init: _DbO.LearSt830.Add(Reflect(new LearSt830())); break; case BFR830.Init: _DbO.LearBfr830.Add(Reflect(new LearBfr830())); break; case NTE830.Init: _DbO.LearNte830.Add(Reflect(new LearNte830())); break; case N1856.Init: _DbO.LearN1830.Add(Reflect(new LearN1830())); break; case N4830.Init: _DbO.LearN4830.Add(Reflect(new LearN4830())); break; case LIN830.Init: _DbO.LearLin830.Add(Reflect(new LearLin830())); break; case UIT830.Init: _DbO.LearUit830.Add(Reflect(new LearUit830())); break; case PRS830.Init: _DbO.LearPrs830.Add(Reflect(new LearPrs830())); break; case SDP830.Init: _DbO.LearSdp830.Add(Reflect(new LearSdp830())); break; case FST830.Init: _DbO.LearFst830.Add(Reflect(new LearFst830())); break; case ATH830.Init: _DbO.LearAth830.Add(Reflect(new LearAth830())); break; case SHP830.Init: _DbO.LearShp830.Add(Reflect(new LearShp830())); break; case REF830.Init: _DbO.LearRef830.Add(Reflect(new LearRef830())); break; //case CTT830.Init: // break; //case SE830.Init: // break; //case GE830.Init: // break; //case IEA830.Init: // break; default: break; } } catch (Exception eFb1) { throw new Exception($"Error al guardar {GetType().GetField("Init").GetRawConstantValue() } {eFb1.ToString()}. Error en linea {EdiStr}"); } foreach (EdiBase ChildO in this.Childs) { ChildO.SaveAll830(ref _DbO); } }
//De modo que se expone https://localhost:44373/Edi/TranslateForms830 public ActionResult <RetReporte> TranslateForms830() { //System.IO.StreamWriter Sw2 = new System.IO.StreamWriter(@"c:\temp\EdiLog.txt", true); //Sw2.WriteLine("TranslateForms830 init" + DateTime.Now.ToString() + Environment.NewLine); //Sw2.Close(); DateTime StartTime = DateTime.Now; LearRep830 LearRep830O = new LearRep830(ref DbO); try { int CodError2 = 0; string MessageSubject = string.Empty, FileName = string.Empty, EdiPureStr = string.Empty; List <string> ListEdiPure = new List <string>(); try { //StreamReader Rep830File = ComRepoMail.GetEdi830File(IMapHost, IMapPortIn, IMapPortOut, IMapUser, IMapPassword, IMapSSL, ref CodError, ref MessageSubject, ref FileName, ref DbO, Config.GetSection("MaxEdiComs").GetValue(typeof(string), "Value")); ComRepoFtp ComRepoFtpO = new ComRepoFtp( (string)IEdiFtpConfig.GetValue(typeof(string), "Host"), (string)IEdiFtpConfig.GetValue(typeof(string), "HostFailover"), (string)IEdiFtpConfig.GetValue(typeof(string), "EdiUser"), (string)IEdiFtpConfig.GetValue(typeof(string), "EdiPassword"), (string)IEdiFtpConfig.GetValue(typeof(string), "DirIn"), (string)IEdiFtpConfig.GetValue(typeof(string), "DirOut"), (string)IEdiFtpConfig.GetValue(typeof(string), "DirChecked"), Config.GetSection("MaxEdiComs").GetValue(typeof(string), "Value") ); if (!ComRepoFtpO.Ping(ref DbO)) { ComRepoFtpO.UseHost2 = true; if (!ComRepoFtpO.Ping(ref DbO)) { return(new RetReporte() { Info = new RetInfo() { CodError = -3, Mensaje = $"Error, no se puede conectar con el servidor FTP primario o secundario", ResponseTimeSeconds = (DateTime.Now - StartTime).TotalSeconds } }); } } ComRepoFtpO.Get(ref DbO, ref CodError2, ref MessageSubject, ref FileName, ref ListEdiPure); //ComRepoMail.GetEdi830File(IMapHost, IMapPortIn, IMapPortOut, IMapUser, IMapPassword, IMapSSL, ref CodError2, ref MessageSubject, ref FileName, ref DbO, Config.GetSection("MaxEdiComs").GetValue(typeof(string), "Value"), ref ListEdiPure); switch (CodError2) { case -1: return(new RetReporte() { Info = new RetInfo() { CodError = -1, Mensaje = $"Error, el correo verificado no contiene ningún archivo. Subject = {MessageSubject}.", ResponseTimeSeconds = (DateTime.Now - StartTime).TotalSeconds } }); case -2: return(new RetReporte() { Info = new RetInfo() { CodError = -2, Mensaje = $"Error, no hay nada a verificar.", ResponseTimeSeconds = (DateTime.Now - StartTime).TotalSeconds } }); case -4: case -5: case -6: case -7: case -8: case -9: case -10: case -11: return(new RetReporte() { Info = new RetInfo() { CodError = CodError2, Mensaje = MessageSubject, ResponseTimeSeconds = (DateTime.Now - StartTime).TotalSeconds } }); } for (int Ifn = 0; Ifn < ListEdiPure.Count; Ifn++) { ListEdiPure[Ifn] = ListEdiPure[Ifn].Replace(Environment.NewLine, ""); } if (ListEdiPure.Count > 1) { ListEdiPure.ForEach(E => EdiPureStr += E); if (ListEdiPure[1].Contains(EdiBase.SegmentTerminator)) { LearRep830O.EdiFile = EdiPureStr.Split(EdiBase.SegmentTerminator).ToList(); } else { LearRep830O.EdiFile = ListEdiPure; } } else if (ListEdiPure.Count == 1) { if (ListEdiPure.FirstOrDefault().Contains(EdiBase.SegmentTerminator)) { LearRep830O.EdiFile = ListEdiPure.FirstOrDefault().Split(EdiBase.SegmentTerminator).ToList(); } else { return(new RetReporte() { Info = new RetInfo() { CodError = -13, Mensaje = $"El archivo Edi {FileName} no contiene un separador de segmento válido, no se puede procesar.", ResponseTimeSeconds = (DateTime.Now - StartTime).TotalSeconds } }); } } else { return(new RetReporte() { Info = new RetInfo() { CodError = -14, Mensaje = $"El archivo Edi {FileName} no contiene ninguna linea de contenido.", ResponseTimeSeconds = (DateTime.Now - StartTime).TotalSeconds } }); } if (LearRep830O.EdiFile.LastOrDefault() == "") { LearRep830O.EdiFile.RemoveAt(LearRep830O.EdiFile.Count - 1); } } catch (Exception ExMail) { return(new RetReporte() { Info = new RetInfo() { CodError = 1, Mensaje = ExMail.ToString(), ResponseTimeSeconds = (DateTime.Now - StartTime).TotalSeconds } }); } LearRep830O.SaveEdiPure(ref EdiPureStr, FileName, LearRep830O.EdiFile.Count); string ParseRet = LearRep830O.Parse(); if (!string.IsNullOrEmpty(ParseRet)) { LearRep830O.LearPureEdiO.Reprocesar = false; LearRep830O.LearPureEdiO.Fprocesado = DateTime.Now.ToString(ApplicationSettings.DateTimeFormat); LearRep830O.LearPureEdiO.Log = ParseRet; LearRep830O.LearPureEdiO.InOut = "I"; DbO.LearPureEdi.Update(LearRep830O.LearPureEdiO); DbO.SaveChanges(); return(new RetReporte() { Info = new RetInfo() { CodError = -12, Mensaje = ParseRet, ResponseTimeSeconds = (DateTime.Now - StartTime).TotalSeconds } }); } LearRep830O.SaveAll(); if (LearRep830.LearIsa830root != null) { LearRep830.LearIsa830root = DbO.LearIsa830.Where(L => L.HashId == LearRep830.LearIsa830root.HashId).FirstOrDefault(); LearRep830.LearIsa830root.ParentHashId = LearRep830O.LearPureEdiO.HashId; DbO.LearIsa830.Update(LearRep830.LearIsa830root); } LearRep830O.UpdateEdiPure(); try { List <Tuple <LIN830, FST830> > ListProductsQtys = new List <Tuple <LIN830, FST830> >(); List <LIN830> ListProducts = new List <LIN830>(); List <SHP830> ListShp = new List <SHP830>(); LearRep830O.ISAO.Childs.ForEach(ObjSt => { if (ObjSt.GetType().Name == "ST830") { ObjSt.Childs.ForEach(ObjLin => { if (ObjLin.GetType().Name == "LIN830") { ObjLin.Childs.ForEach(ObjSdp => { if (ObjSdp.GetType().Name.Equals("SDP830")) { ObjSdp.Childs.ForEach(ObjFst => { if (ObjFst.GetType().Name.Equals("FST830")) { if (!ListProducts.Exists(P => P.HashId == ((LIN830)ObjLin).HashId)) { ListProducts.Add((LIN830)ObjLin); } ListProductsQtys.Add(new Tuple <LIN830, FST830>((LIN830)ObjLin, (FST830)ObjFst)); } }); } else if (ObjSdp.GetType().Name.Equals("SHP830")) { ListShp.Add((SHP830)ObjSdp); } }); } }); } }); ListProductsQtys = ListProductsQtys .OrderBy(Pq => Pq.Item1.ProductId) .ThenBy(Pq2 => Pq2.Item2.FstDate.ToShortDate()) .ToList(); ListProducts.ForEach(P => { DateTime?FirstDate = null; ListProductsQtys .Where(Pq => Pq.Item1.HashId == P.HashId) .ToList().ForEach(Pq => { if (!FirstDate.HasValue) { FirstDate = Pq.Item2.FstDate.ToShortDate(); } if ((Pq.Item2.FstDate.ToShortDate() - FirstDate.Value).TotalDays > 6) { return; } switch (Pq.Item2.FstDate.ToShortDate().DayOfWeek) { case DayOfWeek.Monday: SHP830 Shp = ListShp.Where(S => S.ParentHashId == P.HashId && S.QuantityQualifier.Equals("02")).Fod(); if (Shp != null) { double ShpQty = Convert.ToDouble(Shp.Quantity); double Qty = Convert.ToDouble(Pq.Item2.Quantity); double QtyRes = (Qty - ShpQty); Pq.Item2.RealQty = QtyRes.ToString("N0"); } break; case DayOfWeek.Wednesday: case DayOfWeek.Friday: FST830 FstLast = ListProductsQtys.Where(Pq2 => Pq2.Item1.HashId == P.HashId && Pq2.Item2.FstDate.ToShortDate() == Pq.Item2.FstDate.ToShortDate().AddDays(-2)).Fod().Item2; Pq.Item2.RealQty = (Convert.ToDouble(Pq.Item2.Quantity) - Convert.ToDouble(FstLast.Quantity)).ToString("N0"); break; } }); }); ListProductsQtys = ListProductsQtys.Where(Pq => !string.IsNullOrEmpty(Pq.Item2.RealQty)).ToList(); ListProductsQtys.ForEach(Pq => { LearFst830 Fst = DbO.LearFst830.Where(F => F.HashId == Pq.Item2.HashId).Fod(); Fst.RealQty = Pq.Item2.RealQty; DbO.LearFst830.Update(Fst); }); DbO.SaveChanges(); } catch { } return(new RetReporte() { EdiFile = string.Join(EdiBase.SegmentTerminator, LearRep830O.EdiFile), Info = new RetInfo() { CodError = 0, Mensaje = "Todo OK", ResponseTimeSeconds = (DateTime.Now - StartTime).TotalSeconds } }); } catch (Exception e1) { try { LearRep830O.LearPureEdiO.Log = e1.ToString(); DbContextOptionsBuilder <EdiDBContext> optionsBuilder = new DbContextOptionsBuilder <EdiDBContext>(); optionsBuilder.UseSqlServer(Config.GetConnectionString("EdiDB")); DbOEx = new EdiDBContext(optionsBuilder.Options); DbOEx.LearPureEdi.Update(LearRep830O.LearPureEdiO); DbOEx.SaveChanges(); } catch (Exception SevereEx) { return(new RetReporte() { Info = new RetInfo() { CodError = 1, Mensaje = "ERROR GRAVE DE BASE DE DATOS. " + SevereEx.ToString(), ResponseTimeSeconds = (DateTime.Now - StartTime).TotalSeconds } }); } return(new RetReporte() { Info = new RetInfo() { CodError = 1, Mensaje = e1.ToString(), ResponseTimeSeconds = (DateTime.Now - StartTime).TotalSeconds } }); } }
//public EdiController(EdiDBContext _DbO) { DbO = _DbO; } public EdiController(EdiDBContext _DbO, Models.WmsDB.WmsContext _WmsDb, IConfiguration _Config) { DbO = _DbO; WmsDb = _WmsDb; Config = _Config; }
public void GetInStack(ref EdiDBContext _DbO, ref int _CodError, ref string _MessageSubject) { try { CheckMaxEdiComs(ref _DbO, MaxEdiComs); ftpRequest = UseHost2 ? (FtpWebRequest)WebRequest.Create(host2 + "/" + DirIn) : (FtpWebRequest)WebRequest.Create(host + "/" + DirIn); ftpRequest.Credentials = new NetworkCredential(user, pass); ftpRequest.UseBinary = true; ftpRequest.UsePassive = true; ftpRequest.KeepAlive = true; ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory; ftpResponse = (FtpWebResponse)ftpRequest.GetResponse(); ftpStream = ftpResponse.GetResponseStream(); StreamReader ftpReader = new StreamReader(ftpStream); string directoryRaw = null; try { while (ftpReader.Peek() != -1) { directoryRaw += ftpReader.ReadLine() + "|"; } } catch (Exception ex) { _CodError = -4; _MessageSubject = $"Error al listar archivos de ftp {(UseHost2 ? host2 : host)}. Info: {ex.ToString()}"; AddComLog(ref _DbO, Id, _MessageSubject); Files = new string[] { "" }; } ftpReader.Close(); ftpStream.Close(); ftpResponse.Close(); ftpRequest = null; try { if (directoryRaw == null) { _CodError = -5; _MessageSubject = $"No hay archivos a procesar en {(UseHost2 ? host2 : host)}"; AddComLog(ref _DbO, Id, _MessageSubject); Files = new string[] { "" }; return; } string[] directoryList = directoryRaw.Split("|".ToCharArray()); Files = directoryList; if (Files.LastOrDefault() == "") { Files = Files.Where((F, Fi) => Fi != (Files.Length - 1)).ToArray(); } } catch (Exception ex) { _CodError = -6; _MessageSubject = $"Error al listar archivos del directorio de ftp {(UseHost2 ? host2 : host)}. Info: {ex.ToString()}"; AddComLog(ref _DbO, Id, _MessageSubject); Files = new string[] { "" }; } } catch (Exception ex) { _CodError = -7; _MessageSubject = $"Error en metodo listar archivos a nivel de conexión del directorio de ftp {(UseHost2 ? host2 : host)}. Info: {ex.ToString()}"; AddComLog(ref _DbO, Id, _MessageSubject); Files = new string[] { "" }; } }
public LearRep830(ref EdiDBContext _DbO) { DbO = _DbO; }
public void Get(ref EdiDBContext _DbO, ref int _CodError, ref string _MessageSubject, ref string _FileName, ref List <string> _EdiPure) { try { GetInStack(ref _DbO, ref _CodError, ref _MessageSubject); if (Files.Length == 0) { return; } if (string.IsNullOrEmpty(Files.LastOrDefault())) { return; } List <string> ListFiles = Files.ToList(); List <LearPureEdi> ListLearPureEdiO = ( from Pe in _DbO.LearPureEdi from Lf in ListFiles where Pe.NombreArchivo == Lf select Pe).ToList(); for (int Ci = 0; Ci < ListLearPureEdiO.Count; Ci++) { if (ListLearPureEdiO[Ci].Reprocesar) { ListLearPureEdiO[Ci].Reprocesar = false; _DbO.LearPureEdi.Update(ListLearPureEdiO[Ci]); _DbO.SaveChanges(); _FileName = ListLearPureEdiO[Ci].NombreArchivo; break; } ListFiles.Remove(ListLearPureEdiO[Ci].NombreArchivo); } if (string.IsNullOrEmpty(_FileName)) { if (ListFiles.Count == 0) { _CodError = -2; return; } else { _FileName = ListFiles.Fod(); } } ftpRequest = UseHost2 ? (FtpWebRequest)WebRequest.Create($"{host2}/{DirIn}/{_FileName}") : (FtpWebRequest)WebRequest.Create($"{host}/{DirIn}/{_FileName}"); ftpRequest.Credentials = new NetworkCredential(user, pass); ftpRequest.UseBinary = true; ftpRequest.UsePassive = true; ftpRequest.KeepAlive = true; ftpRequest.Method = WebRequestMethods.Ftp.DownloadFile; ftpResponse = (FtpWebResponse)ftpRequest.GetResponse(); ftpStream = ftpResponse.GetResponseStream(); MemoryStream localFileStream = new MemoryStream(); byte[] byteBuffer = new byte[bufferSize]; int bytesRead = ftpStream.Read(byteBuffer, 0, bufferSize); try { while (bytesRead > 0) { localFileStream.Write(byteBuffer, 0, bytesRead); bytesRead = ftpStream.Read(byteBuffer, 0, bufferSize); } } catch (Exception ex) { _CodError = -9; _MessageSubject = $"Error, al escribir el archivo en stream de memoria {_FileName} en ftp {(UseHost2 ? host2 : host)}. Info: {ex.ToString()}"; AddComLog(ref _DbO, Id, _MessageSubject); return; } localFileStream.Close(); ftpStream.Close(); ftpResponse.Close(); ftpRequest = null; string EdiPure2 = System.Text.Encoding.UTF8.GetString(localFileStream.ToArray()); _EdiPure = EdiPure2.Split(EdiBase.SegmentTerminator).ToList(); if (_EdiPure.Count == 1) { _EdiPure = EdiPure2.Split('\n').ToList(); } AddComLog(ref _DbO, Id, $"Se obtuvo el archivo {_FileName} de ftp {(UseHost2 ? host2 : host)}"); return; } catch (Exception ex) { _CodError = -10; _MessageSubject = $"Error en método GET en ftp {(UseHost2 ? host2 : host)}. Info: {ex.ToString()}"; AddComLog(ref _DbO, Id, _MessageSubject); return; } }
public AccountController(EdiDBContext _DbO, WmsContext _WmsDbO, IConfiguration _Config) { DbO = _DbO; WmsDbO = _WmsDbO; Config = _Config; }
public static void GetEdi830File(string _IMapHost, int _IMapPortIn, int _IMapPortOut, string _IMapUser, string _IMapPassword, bool _IMapSSL, ref int _CodError, ref string _MessageSubject, ref string _FileName, ref EdiDBContext _DbO, object _MaxEdiComs, ref List <string> _EdiPure) { CheckMaxEdiComs(ref _DbO, _MaxEdiComs); try { using (ImapClient ImapClientO = new ImapClient(_IMapHost, _IMapPortIn, _IMapUser, _IMapPassword, AuthMethod.Login, _IMapSSL)) { IEnumerable <uint> uids = ImapClientO.Search(SearchCondition.Unseen()); IEnumerable <MailMessage> ArrMessages = ImapClientO.GetMessages(uids); if (ArrMessages.Count() > 0) { MailMessage MailMessageO = ArrMessages.LastOrDefault(); _MessageSubject = MailMessageO.Subject; if (MailMessageO.Attachments.Count > 0) { _FileName = MailMessageO.Attachments.FirstOrDefault().Name; AddComLog(ref _DbO, Id, $"Se obtuvo el archivo {_FileName}"); StreamReader Rep830File = new StreamReader(MailMessageO.Attachments.FirstOrDefault().ContentStream); while (!Rep830File.EndOfStream) { _EdiPure.Add(Rep830File.ReadLine()); } Rep830File.Close(); } else { AddComLog(ref _DbO, Id, $"Error, el correo verificado no contiene ningún archivo. Subject = {_MessageSubject}."); _CodError = -1; } } else { AddComLog(ref _DbO, Id, $"No hay correos a verificar."); _CodError = -2; } } } catch (Exception Me1) { AddComLog(ref _DbO, Id, Me1.ToString()); throw Me1; } }
public static StreamReader GetEdi830File(string _IMapHost, int _IMapPortIn, int _IMapPortOut, string _IMapUser, string _IMapPassword, bool _IMapSSL, ref int _CodError, ref string _MessageSubject, ref string _FileName, ref EdiDBContext _DbO, object _MaxEdiComs) { CheckMaxEdiComs(ref _DbO, _MaxEdiComs); using (ImapClient ImapClientO = new ImapClient(_IMapHost, _IMapPortIn, _IMapUser, _IMapPassword, AuthMethod.Login, _IMapSSL)) { IEnumerable <uint> uids = ImapClientO.Search(SearchCondition.Unseen()); IEnumerable <MailMessage> ArrMessages = ImapClientO.GetMessages(uids); if (ArrMessages.Count() > 0) { MailMessage MailMessageO = ArrMessages.LastOrDefault(); _MessageSubject = MailMessageO.Subject; if (MailMessageO.Attachments.Count > 0) { _FileName = MailMessageO.Attachments.FirstOrDefault().Name; AddComLog(ref _DbO, Id, $"Se obtuvo el archivo {_FileName}"); return(new StreamReader(MailMessageO.Attachments.FirstOrDefault().ContentStream)); } else { AddComLog(ref _DbO, Id, $"Error, el correo verificado no contiene ningún archivo. Subject = {_MessageSubject}."); _CodError = -1; } } else { AddComLog(ref _DbO, Id, $"No hay correos a verificar."); _CodError = -2; } } return(null); }