public void Upload() { using (var db = new ATTDbContext()) { var msgIds = db.MsgIDs.Include(m => m.ProAwsys).Where(m => m.TaskId == _data.TaskId && m.IsNeedTransform == true && m.IsSend == false && m.ProAwsysId != null).ToList(); var iDocTypeIds = msgIds.GroupBy(g => g.IDocTypeId).Select(g => g.Key).ToList(); var SourceIds = msgIds.GroupBy(g => g.ProAwsys.SourceId).Select(g => g.Key).ToList(); var senderConfigs = db.SenderConfigs.Where(c => iDocTypeIds.Contains(c.IDocTypeId) && SourceIds.Contains(c.SourceId)).ToList(); ProgressInfo info = new ProgressInfo(1, msgIds.Count, ""); foreach (var item in msgIds) { var senderConfig = senderConfigs.Where(c => c.IDocTypeId == item.IDocTypeId && c.SourceId == item.ProAwsys.SourceId).First(); string msg = $"MsgID:{item.MsgId} sent to interface:{senderConfig.senderinterface} component:{senderConfig.itgsendercomponent}"; ATTPayLoadsLog.Write(_data.GetLog(msg, LogType.Normal)); send(item, senderConfig); item.IsSend = true; item.SentDt = DateTime.UtcNow; info.Msg = item.MsgId; _stepReporter.Report(info); info.Current++; ATTPayLoadsLog.Write(_data.GetLog(msg, LogType.Success)); } ATTPayLoadsLog.Write(_data.GetLog(_data.UpdateMsgLog, LogType.Normal)); db.SaveChanges(); ATTPayLoadsLog.Write(_data.GetLog(_data.UpdateMsgLog, LogType.Success)); } }
private HttpStatusCode send(MsgIDs item, SenderConfigs senderConfig, int retryCount = 50) { try { var url = buildUrl(senderConfig); var request = createWebRequest(url); var postXml = getPayload(item.MsgId); using (var stream = request.GetRequestStream()) { postXml.Save(stream); } HttpWebResponse resp = request.GetResponse() as HttpWebResponse; return(resp.StatusCode); } catch (Exception ex) { if (retryCount == 0) { throw ex; } else { retryCount--; ATTPayLoadsLog.Write(_data.GetLog($"Fail to Upload Message:{item.MsgId},Retry left {retryCount} times,Error:{ex.Message}", LogType.Fail)); } Task.Delay(3000).Wait(); return(send(item, senderConfig, retryCount)); } }
public void CopyAndTransform() { ATTPayLoadsLog.Write(_data.GetLog(_data.GetXPathConfigLog, LogType.Normal)); using (var db = new ATTDbContext()) { var para = new SqlParameter("TaskId", _data.TaskId); var xPathConfigs = db.Database.SqlQuery <ATT.Data.VW_EDITransFormConfig>("exec SP_GetXPathConfig @TaskId", para).ToList(); ATTPayLoadsLog.Write(_data.GetLog(_data.GetXPathConfigLog, LogType.Success)); ATTPayLoadsLog.Write(_data.GetLog(_data.UpdateTransformConfigLog, LogType.Normal)); para = new SqlParameter("TaskId", _data.TaskId); db.Database.ExecuteSqlCommand("exec SP_UpdateTransform @TaskId", para); ATTPayLoadsLog.Write(_data.GetLog(_data.UpdateTransformConfigLog, LogType.Success)); ATTPayLoadsLog.Write(_data.GetLog(_data.TransformLog, LogType.Normal)); var msgIds = db.MsgIDs.Where(m => m.TaskId == _data.TaskId && m.MsgId != null).ToList(); if (msgIds.Count > 0) { foreach (var k in msgIds) { var configs = xPathConfigs.Where(x => x.IDocTypeId == k.IDocTypeId && x.ProAwsysId == k.ProAwsysId); transformFile(configs, k); } db.SaveChanges(); } ATTPayLoadsLog.Write(_data.GetLog(_data.TransformLog, LogType.Success)); } }
public void Download() { List <MsgIDs> edikeys = null; var log = _data.GetLog(_data.GetTaskIdLog, LogType.Normal); ATTPayLoadsLog.Write(log); using (var db = new ATTDbContext()) { edikeys = db.MsgIDs.Where(m => m.TaskId == _data.TaskId && m.IsDownload == false).ToList(); } log = _data.GetLog(_data.GetTaskIdLog, LogType.Success); ATTPayLoadsLog.Write(log); if (edikeys.Count > 0) { log = _data.GetLog(_data.DownloadFileLog, LogType.Normal); ATTPayLoadsLog.Write(log); string postData = "msgids="; foreach (var edikey in edikeys) { postData += edikey.MsgId + Environment.NewLine; } postData += "&lastVersion=false&fullEnvelope=false"; downloadFile(postData); ATTPayLoadsLog.Write(_data.GetLog(_data.DownloadFileLog, LogType.Success)); } }
public void UnzipFile() { string file = _data.TaskFolder + ".zip"; FileInfo f = new FileInfo(file); _downloadDt = f.CreationTimeUtc; ATTPayLoadsLog.Write(_data.GetLog(_data.UnzipLog, LogType.Normal)); ZipFile.ExtractToDirectory(file, _data.SourceFolder); ATTPayLoadsLog.Write(_data.GetLog(_data.UnzipLog, LogType.Success)); File.Delete(file); }
public void GetEDIKeyInfo() { dic = new Dictionary <string, EDIKeyTemp>(); ATTPayLoadsLog.Write(_data.GetLog(_data.AnalysisLog, LogType.Normal)); foreach (var f in Directory.GetFiles(_data.SourceFolder)) { string keyId = FetchFileName(f); try { dic.Add(keyId, getDocInfo(f)); } catch { } } ATTPayLoadsLog.Write(_data.GetLog(_data.AnalysisLog, LogType.Success)); }
private void downloadFile(string postData, int RetryCount = 50) { try { HttpWebRequest request = HttpWebRequest.Create(_data.DownloadUrl) as HttpWebRequest; request.Credentials = new NetworkCredential(_data.UserName, _data.Password); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; var data = Encoding.ASCII.GetBytes(postData); using (var stream = request.GetRequestStream()) { stream.Write(data, 0, data.Length); } /// Need to add codes if file can't be downloaded HttpWebResponse response = request.GetResponse() as HttpWebResponse; using (var responseStream = response.GetResponseStream()) { var f = Path.Combine(_data.WorkFolder, $"{_data.TaskId.ToString()}.zip"); if (File.Exists(f)) { File.Delete(f); } using (var fs = File.OpenWrite(f)) { responseStream.CopyTo(fs); } } } catch (Exception ex) { if (RetryCount == 0) { throw ex; } else { RetryCount--; ATTPayLoadsLog.Write(_data.GetLog($"Fail to Download ,Retry left {RetryCount} times", LogType.Fail)); } Task.Delay(3000).Wait(); downloadFile(postData, RetryCount); } }
private byte[] downloadFile(WebClient client, string postData, int RetryCount = 10) { try { byte[] result = client.UploadData(_data.DownloadUrl, "POST", System.Text.Encoding.UTF8.GetBytes(postData)); return(result); } catch (Exception ex) { if (RetryCount == 0) { ATTPayLoadsLog.Write(_data.GetLog(ex.Message, LogType.Error)); throw ex; } else { RetryCount--; ATTPayLoadsLog.Write(_data.GetLog($"Fail to Download , retry {10 - RetryCount}", LogType.Fail)); } Task.Delay(1000).Wait(); return(downloadFile(client, postData, RetryCount)); } }
public void UpdateEDIKeyInfo() { List <IDocTypes> iDocTypes = null; List <ProAwsys> proAwsys = null; ATTPayLoadsLog.Write(_data.GetLog(_data.UploadLog, LogType.Normal)); using (var db = new ATTDbContext()) { iDocTypes = db.IDocTypes.Where(i => i.Name != null).ToList(); proAwsys = db.ProAwsys.Where(p => p.Name != null).ToList(); var msgIds = db.MsgIDs.Where(m => m.TaskId == _data.TaskId).ToList(); foreach (var i in msgIds) { if (dic.ContainsKey(i.MsgId)) { var iDocType = iDocTypes.Where(s => s.Name.Trim().ToLower() == dic[i.MsgId].IDocType.Trim().ToLower()).FirstOrDefault(); if (iDocType == null) { iDocType = new IDocTypes() { Name = dic[i.MsgId].IDocType }; db.IDocTypes.Add(iDocType); i.IDocTypes = iDocType; } else { i.IDocTypeId = iDocType.Id; } //i.IDocTypeId = iDocTypes.Where(s => s.Name.Trim().ToLower() == dic[i.MsgId].IDocType.Trim().ToLower()).FirstOrDefault()?.Id; i.ProAwsysId = proAwsys.Where(s => s.Name.Trim().ToLower() == dic[i.MsgId].Awsys?.Trim().ToLower()).FirstOrDefault()?.Id; i.IsDownload = true; i.DownloadDt = _downloadDt; } } db.SaveChanges(); ATTPayLoadsLog.Write(_data.GetLog(_data.UploadLog, LogType.Success)); } #region Hide //using (var db = new ATT.Data.AttDbContext()) { // using (var transaction = db.Database.BeginTransaction()) { // foreach (var item in dic) { // var ediKey = db.Database.SqlQuery<MsgIDs>("exec SP_UpdateSource @id,@Awsys,@IDocType,@DownloadDt", // new SqlParameter("id", item.Value.Id), // new SqlParameter("Awsys", item.Value.Awsys), // new SqlParameter("IDocType", item.Value.IDocType), // new SqlParameter("DownloadDt", _downloadDtUtc)).SingleOrDefault(); // if (ediKey != null) // ediKeys.Add(ediKey); // } // try { // transaction.Commit(); // } // catch { // transaction.Rollback(); // } // } //} #endregion }