Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 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;
             }
         }
     }
 }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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));
        }
Exemplo n.º 6
0
        /// <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));
        }
Exemplo n.º 7
0
        /// <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);
        }
Exemplo n.º 8
0
        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
            }
        }