コード例 #1
0
ファイル: EdiController.cs プロジェクト: DekInc/GlcWeb2
 //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));
 }
コード例 #2
0
 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);
     }
 }
コード例 #3
0
ファイル: CboController.cs プロジェクト: DekInc/EdiApi
 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));
 }
コード例 #4
0
ファイル: Coms.cs プロジェクト: DekInc/GlcWeb2
 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 { }
 }
コード例 #5
0
ファイル: Coms.cs プロジェクト: DekInc/GlcWeb2
 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 { }
 }
コード例 #6
0
 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;
 }
コード例 #7
0
ファイル: LearRep830.cs プロジェクト: Zaidegroj/EdiApi
 public LearRep830(ref EdiDBContext _DbO, ref Models.WmsDB.WmsContext _WmsDB)
 {
     DbO = _DbO; WmsDb = _WmsDB;
 }
コード例 #8
0
ファイル: EdiBase.cs プロジェクト: DekInc/EdiApi
        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);
            }
        }
コード例 #9
0
ファイル: EdiBase.cs プロジェクト: DekInc/EdiApi
        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);
            }
        }
コード例 #10
0
        //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
                    }
                });
            }
        }
コード例 #11
0
 //public EdiController(EdiDBContext _DbO) { DbO = _DbO; }
 public EdiController(EdiDBContext _DbO, Models.WmsDB.WmsContext _WmsDb, IConfiguration _Config)
 {
     DbO = _DbO; WmsDb = _WmsDb; Config = _Config;
 }
コード例 #12
0
 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[] { "" };
     }
 }
コード例 #13
0
ファイル: LearRep830.cs プロジェクト: Zaidegroj/EdiApi
 public LearRep830(ref EdiDBContext _DbO)
 {
     DbO = _DbO;
 }
コード例 #14
0
 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;
     }
 }
コード例 #15
0
 public AccountController(EdiDBContext _DbO, WmsContext _WmsDbO, IConfiguration _Config)
 {
     DbO    = _DbO;
     WmsDbO = _WmsDbO;
     Config = _Config;
 }
コード例 #16
0
 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;
     }
 }
コード例 #17
0
 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);
 }