public ActiveUp.Net.Mail.Message GetOutBoxMessageByComId(string comId) { Message msg = null; using (var dbcontext = new FAXPECContext()) { try { MAIL_CONTENT content = dbcontext.MAIL_CONTENT.Where(x => x.REF_ID_COM == int.Parse(comId)).FirstOrDefault(); List <COMUNICAZIONI_ALLEGATI> allegati = dbcontext.COMUNICAZIONI_ALLEGATI.Where(x => x.REF_ID_COM == content.REF_ID_COM).ToList(); msg = AutoMapperConfiguration.MapToMessageModelOut(content, allegati); } catch (Exception e) { if (!e.GetType().Equals(typeof(ManagedException))) { ManagedException mEx = new ManagedException("Errore nel metodo GetOutBoxMessageByComId(string comId) Dettaglio: " + e.Message, "E016", string.Empty, string.Empty, e.InnerException); ErrorLogInfo err = new ErrorLogInfo(mEx); _log.Error(err); } } } return(msg); }
public void UpdateMailBody(long idMail, string mailBody) { using (var dbcontext = new FAXPECContext()) { try { MAIL_CONTENT content = dbcontext.MAIL_CONTENT.Where(x => x.ID_MAIL == idMail).FirstOrDefault(); content.MAIL_TEXT = mailBody; dbcontext.SaveChanges(); } catch (Exception e) { //TASK: Allineamento log - Ciro if (!e.GetType().Equals(typeof(ManagedException))) { ManagedException mEx = new ManagedException(String.Format("Errore aggiornamento body mail. >> {0}", e.Message), "ERR_COM_022", string.Empty, string.Empty, e.InnerException); ErrorLogInfo err = new ErrorLogInfo(mEx); err.objectID = idMail.ToString(); _log.Error(err); throw mEx; } else { throw e; } } } }
public Model.ComunicazioniMapping.Comunicazioni GetComunicazioneByIdMail(long idMail) { Comunicazioni comunicazione = new Comunicazioni(); using (var dbcontext = new FAXPECContext()) { try { MAIL_CONTENT content = dbcontext.MAIL_CONTENT.Where(x => x.ID_MAIL == idMail).FirstOrDefault(); if (content != null && content.ID_MAIL > 0) { comunicazione = AutoMapperConfiguration.fromComunicazioniCompleteToDto(content); } } catch (Exception ex) { } } return(comunicazione); }
public ActiveUp.Net.Mail.Message GetById(string mailID, string mailAccount, string mailFolder) { Message msg = null; decimal mailid = default(decimal); using (var dbcontext = new FAXPECContext()) { try { switch (mailFolder.Substring(0, 1)) { case "1": case "3": MAIL_INBOX inbox = dbcontext.MAIL_INBOX.Where(x => x.MAIL_SERVER_ID == mailID && x.MAIL_ACCOUNT.ToString() == mailAccount.ToString()).FirstOrDefault(); msg = AutoMapperConfiguration.MapToMessageModel(inbox); // GetInboxMessage(mailID, mailAccount); break; case "2": //msg = GetOutBoxMessage(mailID, mailAccount); mailid = decimal.Parse(mailID); MAIL_CONTENT content = dbcontext.MAIL_CONTENT.Where(x => x.ID_MAIL == mailid).FirstOrDefault(); List <COMUNICAZIONI_ALLEGATI> allegati = dbcontext.COMUNICAZIONI_ALLEGATI.Where(x => x.REF_ID_COM == content.REF_ID_COM).ToList(); msg = AutoMapperConfiguration.MapToMessageModelOut(content, allegati); break; default: switch (mailFolder.Substring(1, 1)) { case "I": MAIL_INBOX inbox1 = dbcontext.MAIL_INBOX.Where(x => x.MAIL_SERVER_ID == mailID && x.MAIL_ACCOUNT.ToString() == mailAccount.ToString()).FirstOrDefault(); msg = AutoMapperConfiguration.MapToMessageModel(inbox1); // msg = GetInboxMessage(mailID, mailAccount); break; case "O": // msg = GetOutBoxMessage(mailID, mailAccount); MAIL_CONTENT content1 = dbcontext.MAIL_CONTENT.Where(x => x.ID_MAIL == mailid).FirstOrDefault(); List <COMUNICAZIONI_ALLEGATI> allegati1 = dbcontext.COMUNICAZIONI_ALLEGATI.Where(x => x.REF_ID_COM == content1.REF_ID_COM).ToList(); msg = AutoMapperConfiguration.MapToMessageModelOut(content1, allegati1); break; default: // msg = GetInboxMessage(mailID, mailAccount); MAIL_INBOX inbox2 = dbcontext.MAIL_INBOX.Where(x => x.MAIL_SERVER_ID == mailID && x.MAIL_ACCOUNT.ToString() == mailAccount.ToString()).FirstOrDefault(); if (inbox2.ID_MAIL != 0) { msg = AutoMapperConfiguration.MapToMessageModel(inbox2); } else { MAIL_CONTENT content2 = dbcontext.MAIL_CONTENT.Where(x => x.ID_MAIL == int.Parse(mailID)).FirstOrDefault(); if (content2.REF_ID_COM != 0) { List <COMUNICAZIONI_ALLEGATI> allegati2 = dbcontext.COMUNICAZIONI_ALLEGATI.Where(x => x.REF_ID_COM == content2.REF_ID_COM).ToList(); msg = AutoMapperConfiguration.MapToMessageModelOut(content2, allegati2); } } break; } break; } } catch (Exception e) { if (!e.GetType().Equals(typeof(ManagedException))) { ManagedException mEx = new ManagedException("Errore nel metodo GetById(string mailID, string mailAccount, string mailFolder). Dettaglio: " + e.Message, "E006", string.Empty, string.Empty, e.InnerException); ErrorLogInfo err = new ErrorLogInfo(mEx); _log.Error(err); } } } return(msg); }
public JsonResult SendReport( reportModel data, List <reportParm> parms, List <reportParm> extensionParms = null ) { MSGReturnModel <string> result = new MSGReturnModel <string>(); result.RETURN_FLAG = false; Treasury.WebUtility.FileRelated.createFile(Server.MapPath("~/Temp/")); try { var fileLocation = Server.MapPath("~/Temp/"); string title = "報表名稱"; if (data.className.IsNullOrWhiteSpace()) { result.DESCRIPTION = "寄送報表錯誤請聯絡IT人員"; //result.DESCRIPTION = MessageType.parameter_Error.GetDescription(null, "無呼叫的className"); return(Json(result)); } if (!data.title.IsNullOrWhiteSpace()) { title = data.title; } object obj = Activator.CreateInstance(Assembly.Load("Treasury.Web").GetType($"Treasury.Web.Report.Data.{data.className}")); MethodInfo[] methods = obj.GetType().GetMethods(); MethodInfo mi = methods.FirstOrDefault(x => x.Name == "GetData"); if (mi == null) { //檢查是否有實作資料獲取 result.DESCRIPTION = "寄送報表錯誤請聯絡IT人員"; return(Json(result)); } DataSet ds = (DataSet)mi.Invoke(obj, new object[] { parms }); List <reportParm> eparm = (List <reportParm>)(obj.GetType().GetProperty("extensionParms").GetValue(obj)); var lr = new LocalReport(); lr.ReportPath = Server.MapPath($"~/Report/Rdlc/{data.className}.rdlc"); lr.DataSources.Clear(); List <ReportParameter> _parm = new List <ReportParameter>(); _parm.Add(new ReportParameter("Title", title)); if (extensionParms != null) { _parm.AddRange(extensionParms.Select(x => new ReportParameter(x.key, x.value))); } if (eparm.Any()) { _parm.AddRange(eparm.Select(x => new ReportParameter(x.key, x.value))); } if (_parm.Any()) { lr.SetParameters(_parm); } for (int i = 0; i < ds.Tables.Count; i++) { lr.DataSources.Add(new ReportDataSource("DataSet" + (i + 1).ToString(), ds.Tables[i])); } string _DisplayName = title; if (_DisplayName != null) { _DisplayName = _DisplayName.Replace("(", "-").Replace(")", ""); var _name = _parm.FirstOrDefault(x => x.Name == "vJobProject"); if (_name != null) { _DisplayName = $"{_DisplayName}_{_name.Values[0]}"; } } lr.DisplayName = _DisplayName; lr.Refresh(); string mimeType, encoding, extension; Warning[] warnings; string[] streams; var renderedBytes = lr.Render ( "PDF", null, out mimeType, out encoding, out extension, out streams, out warnings ); var saveAs = string.Format("{0}.pdf", Path.Combine(fileLocation, _DisplayName)); var idx = 0; while (Directory.Exists(saveAs)) { idx++; saveAs = string.Format("{0}.{1}.pdf", Path.Combine(fileLocation, _DisplayName), idx); } //using (var stream = new FileStream(saveAs, FileMode.Create, FileAccess.Write)) //{ // stream.Write(renderedBytes, 0, renderedBytes.Length); // stream.Close(); //} lr.Dispose(); #region 寄信 //存許項目 string vitemIdName = extensionParms.FirstOrDefault(x => x.key == "vJobProject")?.value; //庫存日期 string aplyDt = parms.FirstOrDefault(x => x.key == "APLY_DT_From")?.value; MAIL_TIME MT = new MAIL_TIME(); MAIL_CONTENT MC = new MAIL_CONTENT(); //List<Tuple<string, string>> _mailTo = new List<Tuple<string, string>>() { new Tuple<string, string>("*****@*****.**", "測試帳號-glsisys") }; List <Tuple <string, string> > _mailTo = new List <Tuple <string, string> >(); List <Tuple <string, string> > _ccTo = new List <Tuple <string, string> >(); using (TreasuryDBEntities db = new TreasuryDBEntities()) { //季追蹤庫存表 抓5 MT = db.MAIL_TIME.AsNoTracking().FirstOrDefault(x => x.MAIL_TIME_ID == "5" && x.IS_DISABLED != "Y"); var _MAIL_CONTENT_ID = MT?.MAIL_CONTENT_ID; MC = db.MAIL_CONTENT.AsNoTracking().FirstOrDefault(x => x.MAIL_CONTENT_ID == _MAIL_CONTENT_ID && x.IS_DISABLED != "Y"); var _MAIL_RECEIVE = db.MAIL_RECEIVE.AsNoTracking(); var _CODE_ROLE_FUNC = db.CODE_ROLE_FUNC.AsNoTracking(); var _CODE_USER_ROLE = db.CODE_USER_ROLE.AsEnumerable(); var _CODE_USER = db.CODE_USER.AsNoTracking(); var emps = comm.GetEmps(); using (DB_INTRAEntities dbINTRA = new DB_INTRAEntities()) { //存許項目 string vitemId = parms.FirstOrDefault(x => x.key == "vJobProject")?.value; //Bianco 20190326 原參數 vjobProject //權責部門 string vdept = parms.FirstOrDefault(x => x.key == "vdept")?.value; //Bianco 20190326 原參數 CHARGE_DEPT_ID //權責科別 string vsect = parms.FirstOrDefault(x => x.key == "vsect")?.value; //Bianco 20190326 原參數 CHARGE_SECT_ID var _VW_OA_DEPT = dbINTRA.VW_OA_DEPT.AsNoTracking(); var _V_EMPLY2 = dbINTRA.V_EMPLY2.AsNoTracking(); var _ITEM_CHARGE_UNIT = db.ITEM_CHARGE_UNIT.AsNoTracking() .Where(x => x.ITEM_ID == vitemId, vitemId != null) .Where(x => x.CHARGE_DEPT == vdept, vdept != "All") .Where(x => x.CHARGE_SECT == vsect, vsect != "All") .Where(x => x.IS_DISABLED == "N") .AsEnumerable() .Select(x => new ITEM_CHARGE_UNIT() { CHARGE_DEPT = x.CHARGE_DEPT, CHARGE_SECT = x.CHARGE_SECT, CHARGE_UID = x.CHARGE_UID, IS_MAIL_SECT_MGR = x.IS_MAIL_SECT_MGR, IS_MAIL_DEPT_MGR = x.IS_MAIL_DEPT_MGR }).ToList(); _ITEM_CHARGE_UNIT.ForEach(x => { //經辦 var _CHARGE_NAME = _V_EMPLY2.FirstOrDefault(y => y.USR_ID == x.CHARGE_UID); if (_CHARGE_NAME != null && !_mailTo.Any(y => y.Item1 == _CHARGE_NAME.EMAIL)) { _mailTo.Add(new Tuple <string, string>(_CHARGE_NAME.EMAIL, _CHARGE_NAME.EMP_NAME)); } if (x.IS_MAIL_SECT_MGR == "Y") { //科主管員編 var _VW_OA_DEPT_DPT_HEAD = _VW_OA_DEPT.FirstOrDefault(y => y.DPT_CD == x.CHARGE_SECT)?.DPT_HEAD; //人名 EMAIl var _EMP_NAME = _V_EMPLY2.FirstOrDefault(y => y.EMP_NO == _VW_OA_DEPT_DPT_HEAD); if (_EMP_NAME != null && !_mailTo.Any(y => y.Item1 == _EMP_NAME.EMAIL)) { _mailTo.Add(new Tuple <string, string>(_EMP_NAME.EMAIL, _EMP_NAME.EMP_NAME)); } } if (x.IS_MAIL_DEPT_MGR == "Y") { //部主管員編 //var _UP_DPT_CD = _VW_OA_DEPT.FirstOrDefault(y => y.DPT_CD == x.CHARGE_SECT)?.UP_DPT_CD; //var _UP_DPT_CD = _VW_OA_DEPT.FirstOrDefault(y => y.DPT_CD == x.CHARGE_SECT)?.UP_DPT_CD; //var _VW_OA_DEPT_DPT_HEAD = _VW_OA_DEPT.FirstOrDefault(y => y.DPT_CD == _UP_DPT_CD)?.DPT_HEAD; var _VW_OA_DEPT_DPT_HEAD = _VW_OA_DEPT.FirstOrDefault(y => y.DPT_CD == x.CHARGE_DEPT)?.DPT_HEAD; //人名 EMAIl var _EMP_NAME = _V_EMPLY2.FirstOrDefault(y => y.EMP_NO == _VW_OA_DEPT_DPT_HEAD); if (_EMP_NAME != null && !_ccTo.Any(y => y.Item1 == _EMP_NAME.EMAIL) && !_mailTo.Any(y => y.Item1 == _EMP_NAME.EMAIL)) { _ccTo.Add(new Tuple <string, string>(_EMP_NAME.EMAIL, _EMP_NAME.EMP_NAME)); } } }); if (MC != null) { var _FuncId = _MAIL_RECEIVE.Where(x => x.MAIL_CONTENT_ID == MC.MAIL_CONTENT_ID).Select(x => x.FUNC_ID); var _RoleId = _CODE_ROLE_FUNC.Where(x => _FuncId.Contains(x.FUNC_ID)).Select(x => x.ROLE_ID); var _UserId = _CODE_USER_ROLE.Where(x => _RoleId.Contains(x.ROLE_ID)).Select(x => x.USER_ID).Distinct(); List <string> _userIdList = new List <string>(); _userIdList.AddRange(_CODE_USER.Where(x => _UserId.Contains(x.USER_ID) && x.IS_MAIL == "Y").Select(x => x.USER_ID).ToList()); if (_userIdList.Any()) { //人名 EMAIl var _EMP = emps.Where(x => _userIdList.Contains(x.USR_ID)).ToList(); if (_EMP.Any()) { _EMP.ForEach(x => { if (!_ccTo.Any(y => y.Item1 == x.EMAIL) && !_mailTo.Any(y => y.Item1 == x.EMAIL)) { _ccTo.Add(new Tuple <string, string>(x.EMAIL, x.EMP_NAME)); } }); } } } } } string passwordZip = getPassWord(); Dictionary <string, Stream> attachment = new Dictionary <string, Stream>(); //attachment.Add(string.Format("{0}.pdf", _DisplayName), new MemoryStream(renderedBytes)); using (ZipFile zip = new ZipFile(System.Text.Encoding.Default)) { var memSteam = new MemoryStream(); var streamWriter = new StreamWriter(memSteam); ZipEntry e = zip.AddEntry(string.Format("{0}.pdf", _DisplayName), new MemoryStream(renderedBytes)); e.Password = passwordZip; e.Encryption = EncryptionAlgorithm.WinZipAes256; var ms = new MemoryStream(); ms.Seek(0, SeekOrigin.Begin); zip.Save(ms); ms.Seek(0, SeekOrigin.Begin); ms.Flush(); attachment.Add(string.Format("{0}.zip", _DisplayName), ms); } string str = MC?.MAIL_CONTENT1 ?? string.Empty; str = str.Replace("@_DATE_", aplyDt); str = str.Replace("@_ITEM_", vitemIdName); StringBuilder sb = new StringBuilder(); sb.AppendLine(str); try { var sms = new SendMail.SendMailSelf(); sms.smtpPort = 25; sms.smtpServer = Properties.Settings.Default["smtpServer"]?.ToString(); sms.mailAccount = Properties.Settings.Default["mailAccount"]?.ToString(); sms.mailPwd = Properties.Settings.Default["mailPwd"]?.ToString(); sms.Mail_Send( new Tuple <string, string>(sms.mailAccount, "金庫管理系統"), _mailTo, _ccTo, MC?.MAIL_SUBJECT ?? "季追蹤庫存表", sb.ToString(), false, attachment ); } catch (Exception ex) { result.DESCRIPTION = $"Email 發送失敗請人工通知。"; return(Json(result)); } //寄密碼 try { var sms = new SendMail.SendMailSelf(); sms.smtpPort = 25; sms.smtpServer = Properties.Settings.Default["smtpServer"]?.ToString(); sms.mailAccount = Properties.Settings.Default["mailAccount"]?.ToString(); sms.mailPwd = Properties.Settings.Default["mailPwd"]?.ToString(); sms.Mail_Send( new Tuple <string, string>(sms.mailAccount, "金庫管理系統"), _mailTo, _ccTo, "季追蹤庫存表-密碼", $"密碼:{passwordZip}", false, null ); } catch (Exception ex) { result.DESCRIPTION = $"Email 密碼發送失敗。"; return(Json(result)); } #endregion result.RETURN_FLAG = true; result.DESCRIPTION = "已寄送追蹤報表!"; } catch (Exception ex) { result.DESCRIPTION = ex.exceptionMessage(); } return(Json(result)); }
/// <summary> /// 金庫進出管理作業-覆核 /// </summary> /// <param name="db">Entities</param> /// <param name="aplyNos">覆核的申請單號</param> /// <param name="logStr">log</param> /// <param name="dt">執行時間</param> /// <param name="userId">覆核人ID</param> /// <returns></returns> public Tuple <bool, string> TinApproved(TreasuryDBEntities db, List <string> aplyNos, string logStr, DateTime dt, string userId) { foreach (var aplyNo in aplyNos) { var MCH = db.MAIL_CONTENT_HIS.First(x => x.APLY_NO == aplyNo); MCH.APPR_UID = userId; MCH.APPR_DATE = dt; MCH.APPR_STATUS = "2"; //覆核完成 var _MAIL_CONTENT_ID = string.Empty; List <MAIL_RECEIVE> MRS = new List <MAIL_RECEIVE>(); if (!MCH.MAIL_CONTENT_ID.IsNullOrWhiteSpace()) { logStr += MCH.modelToString(logStr); var MC = db.MAIL_CONTENT.First(x => x.MAIL_CONTENT_ID == MCH.MAIL_CONTENT_ID); MC.FREEZE_DT = null; MC.FREEZE_UID = null; MC.APPR_UID = userId; MC.APPR_DT = dt; MC.DATA_STATUS = "1"; //可異動 MC.MAIL_SUBJECT = MCH.MAIL_SUBJECT; MC.MAIL_CONTENT1 = MCH.MAIL_CONTENT; MC.IS_DISABLED = MCH.IS_DISABLED; _MAIL_CONTENT_ID = MC.MAIL_CONTENT_ID; logStr += MC.modelToString(logStr); MRS = db.MAIL_RECEIVE.Where(x => x.MAIL_CONTENT_ID == MCH.MAIL_CONTENT_ID).ToList(); } else { SysSeqDao sysSeqDao = new SysSeqDao(); _MAIL_CONTENT_ID = $@"{sysSeqDao.qrySeqNo("D4", string.Empty).ToString().PadLeft(2, '0')}"; MCH.MAIL_CONTENT_ID = _MAIL_CONTENT_ID; logStr += MCH.modelToString(logStr); var MC = new MAIL_CONTENT() { MAIL_CONTENT_ID = _MAIL_CONTENT_ID, MAIL_SUBJECT = MCH.MAIL_SUBJECT, MAIL_CONTENT1 = MCH.MAIL_CONTENT, IS_DISABLED = MCH.IS_DISABLED, CREATE_UID = MCH.APLY_UID, CREATE_DT = MCH.APLY_DATE, LAST_UPDATE_UID = MCH.APLY_UID, LAST_UPDATE_DT = dt, APPR_UID = userId, APPR_DT = dt, DATA_STATUS = "1" //可異動 }; db.MAIL_CONTENT.Add(MC); logStr += MC.modelToString(logStr); } foreach (var subitem in db.MAIL_RECEIVE_HIS .Where(x => x.APLY_NO == aplyNo && x.EXEC_ACTION != null)) { MAIL_RECEIVE _MR = new MAIL_RECEIVE(); switch (subitem.EXEC_ACTION) { case "A": _MR = new MAIL_RECEIVE() { MAIL_CONTENT_ID = _MAIL_CONTENT_ID, FUNC_ID = subitem.FUNC_ID, DATA_STATUS = "1", //可異動 CREATE_UID = MCH.APLY_UID, CREATE_DT = MCH.APLY_DATE, APPR_UID = userId, APPR_DT = dt, LAST_UPDATE_UID = MCH.APLY_UID, LAST_UPDATE_DT = MCH.APLY_DATE }; logStr += _MR.modelToString(logStr); db.MAIL_RECEIVE.Add(_MR); break; case "D": _MR = MRS.FirstOrDefault(x => x.FUNC_ID == subitem.FUNC_ID); if (_MR != null) { db.MAIL_RECEIVE.Remove(_MR); } break; } } } return(new Tuple <bool, string>(true, logStr)); }
/// <summary> /// 金庫進出管理作業-申請覆核 /// </summary> /// <param name="saveData">申請覆核的資料</param> /// <param name="searchModel">查詢ViwModel</param> /// <returns></returns> public MSGReturnModel <IEnumerable <ITinItem> > TinApplyAudit(IEnumerable <ITinItem> saveData, ITinItem searchModel) { var searchData = (TreasuryMailContentSearchViewModel)searchModel; var result = new MSGReturnModel <IEnumerable <ITinItem> >(); result.RETURN_FLAG = false; DateTime dt = DateTime.Now; try { if (saveData != null) { var data = ((List <TreasuryMailContentUpdateViewModel>)saveData).FirstOrDefault(); if (data != null) { using (TreasuryDBEntities db = new TreasuryDBEntities()) { //取得流水號 SysSeqDao sysSeqDao = new SysSeqDao(); String qPreCode = DateUtil.getCurChtDateTime().Split(' ')[0]; string logStr = string.Empty; //log var _MAIL_CONTENT_ID = string.Empty; MAIL_CONTENT _MC = null; if (!data.vMAIL_CONTENT_ID.IsNullOrWhiteSpace()) //現有資料修改 { _MAIL_CONTENT_ID = data.vMAIL_CONTENT_ID; _MC = db.MAIL_CONTENT.First(x => x.MAIL_CONTENT_ID == _MAIL_CONTENT_ID); if (_MC.DATA_STATUS != "1") { result.DESCRIPTION = Ref.MessageType.already_Change.GetDescription(); return(result); } _MC.DATA_STATUS = "2"; //凍結中 _MC.LAST_UPDATE_UID = data.UserID; _MC.LAST_UPDATE_DT = dt; _MC.FREEZE_DT = dt; _MC.FREEZE_UID = data.UserID; } else { //目前只加入異動檔 } string _Aply_No = $@"G4{qPreCode}{sysSeqDao.qrySeqNo("G4", qPreCode).ToString().PadLeft(3, '0')}"; //申請單號 G4+系統日期YYYMMDD(民國年)+3碼流水號 var MCH = new MAIL_CONTENT_HIS() { APLY_NO = _Aply_No, MAIL_CONTENT_ID = _MAIL_CONTENT_ID, IS_DISABLED = data.vIS_DISABLED, IS_DISABLED_B = _MC?.IS_DISABLED, MAIL_SUBJECT = data.vMAIL_SUBJECT, MAIL_SUBJECT_B = _MC?.MAIL_SUBJECT, MAIL_CONTENT = data.vMAIL_CONTENT, MAIL_CONTENT_B = _MC?.MAIL_CONTENT1, APLY_UID = data.UserID, APLY_DATE = dt, APPR_STATUS = "1", //表單申請 EXEC_ACTION = (data.vMAIL_CONTENT_ID != null) ? "U" : "A" }; logStr += MCH.modelToString(logStr); db.MAIL_CONTENT_HIS.Add(MCH); foreach (var item in data.subData) { var _MRH = new MAIL_RECEIVE_HIS() { APLY_NO = _Aply_No, MAIL_CONTENT_ID = _MAIL_CONTENT_ID, FUNC_ID = item.FUNC_ID, EXEC_ACTION = item.vStatus }; logStr += _MRH.modelToString(logStr); db.MAIL_RECEIVE_HIS.Add(_MRH); } #region Save Db var validateMessage = db.GetValidationErrors().getValidateString(); if (validateMessage.Any()) { result.DESCRIPTION = validateMessage; } else { try { db.SaveChanges(); #region LOG //新增LOG Log log = new Log(); log.CFUNCTION = "申請覆核-mail發送內文設定檔"; log.CACTION = "A"; log.CCONTENT = logStr; LogDao.Insert(log, data.UserID); #endregion result.Datas = GetSearchData(searchModel); result.RETURN_FLAG = true; result.DESCRIPTION = Ref.MessageType.Apply_Audit_Success.GetDescription(null, $@"單號為{_Aply_No}"); } catch (DbUpdateException ex) { result.DESCRIPTION = ex.exceptionMessage(); } } #endregion } } else { result.DESCRIPTION = Ref.MessageType.not_Find_Audit_Data.GetDescription(); } } else { result.DESCRIPTION = Ref.MessageType.not_Find_Audit_Data.GetDescription(); } } catch (Exception ex) { result.DESCRIPTION = ex.exceptionMessage(); } return(result); }
public void Insert(Model.ComunicazioniMapping.Comunicazioni entity) { using (var dbcontext = new FAXPECContext()) { using (var dbContextTransaction = dbcontext.Database.BeginTransaction()) { try { AutoMapperConfiguration.Configure(); // COMUNICAZIONI comunicazione = AutoMapperConfiguration.fromComunicazioniToDto(entity,false,false); COMUNICAZIONI comunicazione = AutoMapperConfiguration.fromComunicazioniToSimpleDto(entity); decimal idComOld = 0; string v_cod_app = string.Empty; if (entity.MailComunicazione.Follows != null) { MAIL_CONTENT oldcontent = dbcontext.MAIL_CONTENT.Where(x => x.ID_MAIL == entity.MailComunicazione.Follows).FirstOrDefault(); idComOld = (oldcontent == null) ? 0 : oldcontent.REF_ID_COM; } if (idComOld == 0) { v_cod_app = dbcontext.COMUNICAZIONI_SOTTOTITOLI.Where(x => x.ID_SOTTOTITOLO == entity.RefIdSottotitolo).First().COMUNICAZIONI_TITOLI.APP_CODE; entity.CodAppInserimento = v_cod_app; } else { COMUNICAZIONI old_comunicazione = dbcontext.COMUNICAZIONI.Where(x => x.ID_COM == idComOld).First(); entity.CodAppInserimento = old_comunicazione.COD_APP_INS; entity.RefIdSottotitolo = long.Parse(old_comunicazione.REF_ID_SOTTOTITOLO.ToString()); } dbcontext.COMUNICAZIONI.Add(comunicazione); dbcontext.SaveChanges(); decimal idcomnew = dbcontext.COMUNICAZIONI.Max(x => x.ID_COM); entity.IdComunicazione = (long)idcomnew; MAIL_CONTENT content = AutoMapperConfiguration.FromComunicazioniToMailContent(entity); dbcontext.MAIL_CONTENT.Add(content); dbcontext.SaveChanges(); decimal newidmail = dbcontext.MAIL_CONTENT.Select(c => c.ID_MAIL).DefaultIfEmpty(0).Max(); if (entity.ComFlussi != null && entity.ComFlussi.Count > 0) { var list = entity.ComFlussi.Where(x => x.Key == TipoCanale.MAIL).SelectMany(z => z.Value); foreach (ComFlusso comFlusso in list) { COMUNICAZIONI_FLUSSO flusso = new COMUNICAZIONI_FLUSSO { CANALE = comFlusso.Canale.ToString(), DATA_OPERAZIONE = (comFlusso.DataOperazione == null ? DateTime.Now : Convert.ToDateTime(comFlusso.DataOperazione)), STATO_COMUNICAZIONE_NEW = ((int)comFlusso.StatoComunicazioneNew).ToString(), STATO_COMUNICAZIONE_OLD = ((int)comFlusso.StatoComunicazioneOld).ToString(), UTE_OPE = comFlusso.UtenteOperazione }; if (entity.IdComunicazione.HasValue) { flusso.REF_ID_COM = LinqExtensions.TryParseInt(entity.IdComunicazione); } else { flusso.REF_ID_COM = idcomnew; } if (comFlusso.IdFlusso.HasValue) { flusso.ID_FLUSSO = LinqExtensions.TryParseDouble(comFlusso.IdFlusso); } dbcontext.COMUNICAZIONI_FLUSSO.Add(flusso); dbcontext.SaveChanges(); } } else { COMUNICAZIONI_FLUSSO flusso = new COMUNICAZIONI_FLUSSO { CANALE = TipoCanale.MAIL.ToString(), DATA_OPERAZIONE = System.DateTime.Now, STATO_COMUNICAZIONE_NEW = ((int)(MailStatus.INSERTED)).ToString(), STATO_COMUNICAZIONE_OLD = null, UTE_OPE = entity.UtenteInserimento }; flusso.REF_ID_COM = idcomnew; dbcontext.COMUNICAZIONI_FLUSSO.Add(flusso); dbcontext.SaveChanges(); } if (entity.ComFlussiProtocollo != null && entity.ComFlussiProtocollo.Count > 0) { foreach (ComFlussoProtocollo comFlussoProtocollo in entity.ComFlussiProtocollo) { COMUNICAZIONI_FLUSSO_PROT flussoprotocollo = new COMUNICAZIONI_FLUSSO_PROT { DATA_OPERAZIONE = (DateTime)comFlussoProtocollo.DataOperazione, STATO_NEW = LinqExtensions.TryParseByte(comFlussoProtocollo.StatoNew.ToString()), STATO_OLD = LinqExtensions.TryParseByte(comFlussoProtocollo.StatoOld.ToString()), UTE_OPE = comFlussoProtocollo.UtenteOperazione }; if (entity.IdComunicazione.HasValue) { flussoprotocollo.REF_ID_COM = LinqExtensions.TryParseInt(entity.IdComunicazione); } else { flussoprotocollo.REF_ID_COM = idcomnew; } dbcontext.COMUNICAZIONI_FLUSSO_PROT.Add(flussoprotocollo); } } // gestione rubrica if (entity.RubricaEntitaUsed != null && entity.RubricaEntitaUsed.Count > 0) { foreach (RubrEntitaUsed entitaused in entity.RubricaEntitaUsed) { // se ho usato la rubrica if (entitaused.IdEntUsed != null && entitaused.IdEntUsed != 0) { V_RUBR_CONTATTI v_rubr_contatti = dbcontext.V_RUBR_CONTATTI.Where(x => x.ID_CONTACT == entitaused.IdEntUsed).First(); MAIL_REFS_NEW mailrefsnew = new MAIL_REFS_NEW() { REF_ID_MAIL = comunicazione.MAIL_CONTENT.First().ID_MAIL, TIPO_REF = entitaused.TipoContatto.ToString(), MAIL_DESTINATARIO = v_rubr_contatti.MAIL }; dbcontext.MAIL_REFS_NEW.Add(mailrefsnew); COMUNICAZIONI_DESTINATARI destinatari = dbcontext.COMUNICAZIONI_DESTINATARI.Where(x => x.CAP == v_rubr_contatti.CAP && x.CIVICO == v_rubr_contatti.CIVICO && x.COD_FIS == v_rubr_contatti.COD_FIS && x.COD_ISO_STATO == v_rubr_contatti.COD_ISO_STATO && x.COGNOME == v_rubr_contatti.COGNOME && x.COMUNE == v_rubr_contatti.COMUNE && x.CONTACT_REF == v_rubr_contatti.CONTACT_REF && x.FAX == v_rubr_contatti.FAX && x.ID_REFERRAL == v_rubr_contatti.REF_ID_REFERRAL && x.INDIRIZZO == v_rubr_contatti.INDIRIZZO && x.MAIL == v_rubr_contatti.MAIL && x.NOME == v_rubr_contatti.NOME && x.P_IVA == v_rubr_contatti.P_IVA && x.RAGIONE_SOCIALE == v_rubr_contatti.RAGIONE_SOCIALE && x.REFERRAL_TYPE == v_rubr_contatti.REFERRAL_TYPE && x.SIGLA_PROV == v_rubr_contatti.SIGLA_PROV && x.TELEFONO == v_rubr_contatti.TELEFONO && x.UFFICIO == v_rubr_contatti.UFFICIO).FirstOrDefault(); if (destinatari.ID_REFERRAL > 0) { COMUNICAZIONI_ENTITA_USED comunicazioni_entita_used = new COMUNICAZIONI_ENTITA_USED() { REF_ID_COMUNICAZIONE = comunicazione.ID_COM, REF_ID_ENTITA = destinatari.ID_REFERRAL, REF_ID_ENT_USED = destinatari.ID_COM_DEST }; dbcontext.COMUNICAZIONI_ENTITA_USED.Add(comunicazioni_entita_used); } else { COMUNICAZIONI_DESTINATARI destinatari_new = AutoMapperConfiguration.fromRubrContattiToComunicazioniDestinatari(v_rubr_contatti); dbcontext.COMUNICAZIONI_DESTINATARI.Add(destinatari); } } // se ho il contatto custom else { MAIL_REFS_NEW mailrefsnew = new MAIL_REFS_NEW() { REF_ID_MAIL = newidmail, TIPO_REF = entitaused.TipoContatto.ToString(), MAIL_DESTINATARIO = entitaused.Mail }; dbcontext.MAIL_REFS_NEW.Add(mailrefsnew); dbcontext.SaveChanges(); } } } // fine rubrica //inizio allegati if (entity.ComAllegati != null && entity.ComAllegati.Count > 0) { foreach (ComAllegato a in entity.ComAllegati) { COMUNICAZIONI_ALLEGATI all = AutoMapperConfiguration.FromComAllegatoToDto(a); all.REF_ID_COM = idcomnew; dbcontext.COMUNICAZIONI_ALLEGATI.Add(all); } dbcontext.SaveChanges(); } dbContextTransaction.Commit(); } // fine try catch (Exception ex) { dbContextTransaction.Rollback(); if (!ex.GetType().Equals(typeof(ManagedException))) { ManagedException mEx = new ManagedException("Errore inserimento comunicazione. Dettaglio: " + ex.Message, "ERR_COM_032", string.Empty, string.Empty, ex.InnerException); ErrorLogInfo err = new ErrorLogInfo(mEx); err.objectID = (entity.IdComunicazione != null) ? entity.IdComunicazione.ToString() : ""; _log.Error(err); throw mEx; } else { throw ex; } } // fine using transaction } // fine using } }