Example #1
0
 public void SaveEmail(SystemEmailMessage_PDO model)
 {
     if (model.SystemEmailMessageID != 0)
     {
         model.Status = (int)Enums.SystemEmailMessageStatus.Processed;
         var original = context.SystemEmailMessage_PDO.Where(sem => sem.SystemEmailMessageID == model.SystemEmailMessageID).FirstOrDefault();
         context.Entry(original).CurrentValues.SetValues(model);
         context.SaveChanges();
     }
 }
Example #2
0
        public void SaveSystemEmailMessage(PDOEmailModel model, bool updateRecord = true, bool createCopy = false)
        {
            try
            {
                SystemEmailMessage_PDO m = new SystemEmailMessage_PDO();
                m.EmailBody      = model.EmailBody;
                m.EmailFrom      = model.EmailFrom;
                m.EmailSubject   = model.EmailSubject;
                m.EmailTo        = model.EmailTo;
                m.Status         = createCopy ?  0 : model.EmailStatus;
                m.tsUpdate       = DateTime.Now;
                m.tsUpdateUserID = model.tsUpdateUserID;
                m.ts             = model.ts.Equals(DateTime.MinValue) ? (DateTime?)null : model.ts;
                m.tsIDOsebe      = model.tsIDOsebe;


                var existingItem = context.SystemEmailMessage_PDO.Where(mes => mes.SystemEmailMessageID == model.SystemEmailMessageID).FirstOrDefault();
                if (existingItem != null)
                {
                    m.Attachments          = existingItem.Attachments;
                    m.CCEmails             = existingItem.CCEmails;
                    m.OsebaEmailFromID     = existingItem.OsebaEmailFromID;
                    m.SystemEmailMessageID = createCopy ? 0 : existingItem.SystemEmailMessageID;
                    m.MasterMailID         = existingItem.SystemEmailMessageID;
                }

                if (m.SystemEmailMessageID == 0)
                {
                    m.ts        = DateTime.Now;
                    m.tsIDOsebe = model.tsIDOsebe;

                    context.SystemEmailMessage_PDO.Add(m);
                }
                else
                {
                    if (updateRecord)
                    {
                        SystemEmailMessage_PDO original = context.SystemEmailMessage_PDO.Where(mes => mes.SystemEmailMessageID == m.SystemEmailMessageID).FirstOrDefault();
                        context.Entry(original).CurrentValues.SetValues(m);
                    }
                }

                context.SaveChanges();
            }
            catch (Exception ex)
            {
                throw new Exception(ValidationExceptionError.res_08, ex);
            }
        }
Example #3
0
        private void SaveToSystemEmailMessage(string emailTo, string bodyMessage, int?userID, int hierarchyLevel = 1, string emailSubject = "Novo sporočilo", string attachments = "")
        {
            try
            {
                SystemEmailMessage_PDO emailConstruct = null;

                for (int i = 0; i < hierarchyLevel; i++)
                {
                    emailConstruct = new SystemEmailMessage_PDO();
                    //DataTypesHelper.LogThis("*****in for loop SaveToSystemEmailMessage*****");
                    emailConstruct.EmailFrom    = ConfigurationManager.AppSettings["EmailFromForDB"].ToString();
                    emailConstruct.EmailSubject = emailSubject;
                    emailConstruct.EmailBody    = bodyMessage;
                    emailConstruct.Status       = (int)Enums.SystemEmailMessageStatus.UnProcessed;
                    emailConstruct.ts           = DateTime.Now;
                    emailConstruct.tsIDOsebe    = userID.HasValue ? userID.Value : 0;

                    if (i == 0)
                    {
                        emailConstruct.EmailTo = emailTo;
                    }
                    else if (i == 1)
                    {
                        emailConstruct.EmailTo       = context.OsebeNadrejeni_PDO.Where(on => on.OsebaID == userID.Value).FirstOrDefault().Osebe_PDO1.Email;//Nadrejeni;
                        emailConstruct.EmailSubject += " - Sporočilo za nadrejenega";
                    }
                    else if (i == 2)
                    {
                        int ceo = Convert.ToInt32(ConfigurationManager.AppSettings["CEOId"].ToString());
                        emailConstruct.EmailTo       = context.Osebe_PDO.Where(o => o.OsebaID == ceo).FirstOrDefault().Email;//direktor;
                        emailConstruct.EmailSubject += " - Sporočilo za nadrejenega";
                    }

                    if (attachments.Length > 0)
                    {
                        emailConstruct.Attachments = attachments;
                    }

                    context.SystemEmailMessage_PDO.Add(emailConstruct);
                }

                context.SaveChanges();
            }
            catch (Exception ex)
            {
                throw new Exception("Method SaveToSystemEmailMessage ERROR: " + ex);
            }
        }
Example #4
0
        private void SendMessages(SmtpClient client, SystemEmailMessage item = null, SystemEmailMessage_OTP otpItem = null, SystemEmailMessage_PDO pdoItem = null, SystemEmailMessage_NOZ nozItem = null)
        {
            bool isOTPitem = false;
            bool isPDOitem = false;
            bool isNOZItem = false;

            try
            {
                if (otpItem != null)
                {
                    isOTPitem = true;
                }
                else if (pdoItem != null)
                {
                    isPDOitem = true;
                }
                else if (nozItem != null)
                {
                    isNOZItem = true;
                }

                //if (String.IsNullOrEmpty(isOTPitem ? otpItem.EmailTo : (isPDOitem ? ((pdoItem.TOEmails != null && pdoItem.TOEmails.Length > 0) ? pdoItem.TOEmails : pdoItem.EmailTo) : (isNOZItem ? nozItem.EmailTo : item.EmailTo))))
                if (String.IsNullOrEmpty(isOTPitem ? otpItem.EmailTo : (isPDOitem ? pdoItem.EmailTo : (isNOZItem ? nozItem.EmailTo : item.EmailTo))))
                {
                    if (isOTPitem)
                    {
                        otpItem.Status = (int)Enums.SystemEmailMessageStatus.Processed;
                    }
                    else if (isPDOitem)
                    {
                        pdoItem.Status = (int)Enums.SystemEmailMessageStatus.Processed;
                    }
                    else if (isNOZItem)
                    {
                        pdoItem.Status = (int)Enums.SystemEmailMessageStatus.Processed;
                    }
                    else
                    {
                        item.Status = (int)Enums.SystemEmailMessageStatus.Processed;
                    }

                    DataTypesHelper.LogThis("Couldn't send email! Email to is empty");
                }
                else
                {
                    string sender = "", emailTitle = "", emailTo = "", emailSubject = "", emailBody = "";

                    if (isOTPitem)
                    {
                        DataTypesHelper.LogThis("OTP ITEM!");
                        sender = ConfigurationManager.AppSettings["SenderOTP"].ToString();
                        //sender = otpItem.EmailFrom;

                        emailTitle   = "(" + otpItem.EmailFrom + ") - " + ConfigurationManager.AppSettings["EmailTitleOTP"].ToString();
                        emailTo      = otpItem.EmailTo;
                        emailSubject = otpItem.EmailSubject;
                        emailBody    = otpItem.EmailBody;
                    }
                    else if (isPDOitem)
                    {
                        DataTypesHelper.LogThis("PDO ITEM");
                        if (Convert.ToBoolean(ConfigurationManager.AppSettings["UseUserEmailSettings"]))
                        {
                            if (pdoItem.OsebaEmailFromID.HasValue)
                            {
                                SettingsModel set = pdoSettingsRepo.GetLatestSettings();

                                string host = String.IsNullOrEmpty(set.EmailStreznik) ? pdoItem.Osebe_PDO.EmailStreznik : set.EmailStreznik;
                                //int port = 587;//set.EmailVrata > 0 ? set.EmailVrata : pdoItem.Osebe_PDO.EmailVrata.Value;
                                int port = set.EmailVrata > 0 ? set.EmailVrata : pdoItem.Osebe_PDO.EmailVrata.Value;
                                //bool sslEnable = false;//!set.EmailSifriranjeSSL ? pdoItem.Osebe_PDO.EmailSifriranjeSSL.Value : set.EmailSifriranjeSSL;
                                bool sslEnable = set.EmailSifriranjeSSL ? pdoItem.Osebe_PDO.EmailSifriranjeSSL.Value : set.EmailSifriranjeSSL;
                                //var credentials = new NetworkCredential("*****@*****.**"/*pdoItem.Osebe_PDO.Email, "Geslo123."/*pdoItem.Osebe_PDO.EmailGeslo);
                                var credentials = new NetworkCredential(pdoItem.Osebe_PDO.Email, pdoItem.Osebe_PDO.EmailGeslo);

                                client = new SmtpClient
                                {
                                    Host                  = host,
                                    Port                  = port,
                                    EnableSsl             = sslEnable,
                                    DeliveryMethod        = SmtpDeliveryMethod.Network,
                                    UseDefaultCredentials = false,
                                    Credentials           = credentials
                                };
                            }
                        }

                        string emailTitleOseba = pdoItem.Osebe_PDO != null ? pdoItem.Osebe_PDO.Ime + " " + pdoItem.Osebe_PDO.Priimek : ConfigurationManager.AppSettings["EmailTitlePDO"].ToString();;
                        sender     = pdoItem.OsebaEmailFromID != null ? pdoItem.Osebe_PDO.Email : ConfigurationManager.AppSettings["SenderPDO"].ToString();
                        emailTitle = emailTitleOseba;


                        emailTo      = pdoItem.EmailTo;
                        emailSubject = pdoItem.EmailSubject;
                        emailBody    = pdoItem.EmailBody;
                    }
                    else if (isNOZItem)
                    {
                        sender = ConfigurationManager.AppSettings["SenderNOZ"].ToString();
                        //sender = otpItem.EmailFrom;

                        //string emailTitleOseba = nozItem.Osebe_PDO != null ? pdoItem.Osebe_PDO.Ime + " " + pdoItem.Osebe_PDO.Priimek : ConfigurationManager.AppSettings["EmailTitlePDO"].ToString(); ;
                        //sender = nozItem.OsebaEmailFromID != null ? nozItem.Osebe_PDO.Email : ConfigurationManager.AppSettings["SenderNOZ"].ToString();


                        emailTitle   = "(" + nozItem.EmailFrom + ") - " + ConfigurationManager.AppSettings["EmailTitleNOZ"].ToString();
                        emailTo      = nozItem.EmailTo;
                        emailSubject = nozItem.EmailSubject;
                        emailBody    = nozItem.EmailBody;
                    }
                    else
                    {
                        sender       = ConfigurationManager.AppSettings["Sender"].ToString();
                        emailTitle   = ConfigurationManager.AppSettings["EmailTitle"].ToString();
                        emailTo      = item.EmailTo;
                        emailSubject = item.EmailSubject;
                        emailBody    = item.EmailBody;
                    }



                    MailMessage message = new MailMessage();

                    // preverimo če je emailTO prazen pomeni, da vazame list pošiljateljev
                    if (emailTo.Length > 0)
                    {
                        if (emailTo != null && emailTo.Length > 0)
                        {
                            string[] splitTOEmails = emailTo.Split(';');
                            if (splitTOEmails.Length > 1)
                            {
                                foreach (var email in splitTOEmails)
                                {
                                    MailAddress ToEmail = new MailAddress(email);
                                    message.To.Add(ToEmail);
                                }
                            }
                            else
                            {
                                message.To.Add(emailTo);
                            }
                        }
                    }

                    message.Sender       = new MailAddress(sender);
                    message.From         = new MailAddress(sender, emailTitle);
                    message.Subject      = emailSubject;
                    message.IsBodyHtml   = true;
                    message.Body         = emailBody;
                    message.BodyEncoding = Encoding.UTF8;


                    if (isOTPitem)
                    {
                        otpItem.Status = (int)Enums.SystemEmailMessageStatus.Processed;
                    }
                    else if (isPDOitem)
                    {
                        pdoItem.Status = (int)Enums.SystemEmailMessageStatus.Processed;
                    }
                    else if (isNOZItem)
                    {
                        nozItem.Status = (int)Enums.SystemEmailMessageStatus.Processed;
                    }
                    else
                    {
                        item.Status = (int)Enums.SystemEmailMessageStatus.Processed;
                    }

                    // Boris 20.11.2019:  attachments
                    string attachmentFilename = "";
                    if (isOTPitem || isPDOitem || isNOZItem)
                    {
                        attachmentFilename = isOTPitem ? otpItem.Attachments : (isPDOitem ? pdoItem.Attachments : nozItem.Attachments);
                    }
                    else
                    {
                    }

                    // Boris 27.04.2020: CC seznam emailov
                    if (isPDOitem)
                    {
                        if (pdoItem.CCEmails != null && pdoItem.CCEmails.Length > 0)
                        {
                            string[] splitCCEmails = pdoItem.CCEmails.Split(';');
                            foreach (var email in splitCCEmails)
                            {
                                MailAddress copy = new MailAddress(email);
                                message.CC.Add(copy);
                            }
                        }
                    }


                    if (!string.IsNullOrEmpty(attachmentFilename))
                    {
                        string[] splitAttachments = attachmentFilename.Split(';');
                        foreach (var fileAttachment in splitAttachments)
                        {
                            if (File.Exists(attachmentFilename))
                            {
                                Attachment         attachment  = new Attachment(fileAttachment, MediaTypeNames.Application.Octet);
                                ContentDisposition disposition = attachment.ContentDisposition;
                                disposition.CreationDate     = File.GetCreationTime(fileAttachment);
                                disposition.ModificationDate = File.GetLastWriteTime(fileAttachment);
                                disposition.ReadDate         = File.GetLastAccessTime(fileAttachment);
                                disposition.FileName         = Path.GetFileName(fileAttachment);
                                disposition.Size             = new FileInfo(fileAttachment).Length;
                                disposition.DispositionType  = DispositionTypeNames.Attachment;
                                message.Attachments.Add(attachment);
                            }
                        }
                    }
                    // ------------------------------------------------------------------------------------

                    client.Send(message);
                }

                if (isOTPitem)
                {
                    otpSystemEmailMessageRepo.SaveEmail(otpItem);
                }
                else if (isPDOitem)
                {
                    pdoSystemEmailMessageRepo.SaveEmail(pdoItem);
                }
                else if (isNOZItem)
                {
                    nozSystemEmailMessageRepo.SaveEmail(nozItem);
                }
                else
                {
                    systemEmailMessageRepo.SaveEmail(item);
                }
            }
            catch (SmtpFailedRecipientsException ex)
            {
                if (isOTPitem)
                {
                    otpItem.Status = (int)Enums.SystemEmailMessageStatus.RecipientError;
                }
                else if (isPDOitem)
                {
                    pdoItem.Status = (int)Enums.SystemEmailMessageStatus.RecipientError;
                }
                else if (isNOZItem)
                {
                    nozItem.Status = (int)Enums.SystemEmailMessageStatus.RecipientError;
                }
                else
                {
                    item.Status = (int)Enums.SystemEmailMessageStatus.RecipientError;
                }

                DataTypesHelper.LogThis("Couldn't send the email to receipient: " + item.EmailTo + "\n" + ex.Message);

                if (isOTPitem)
                {
                    otpSystemEmailMessageRepo.SaveEmail(otpItem);
                }
                else if (isPDOitem)
                {
                    pdoSystemEmailMessageRepo.SaveEmail(pdoItem);
                }
                else if (isNOZItem)
                {
                    nozSystemEmailMessageRepo.SaveEmail(nozItem);
                }
                else
                {
                    systemEmailMessageRepo.SaveEmail(item);
                }
            }
            catch (SmtpException ex)
            {
                if (ex.Message.Contains("Mailbox unavailable"))
                {
                    if (isOTPitem)
                    {
                        otpItem.Status = (int)Enums.SystemEmailMessageStatus.RecipientError;
                    }
                    else if (isPDOitem)
                    {
                        pdoItem.Status = (int)Enums.SystemEmailMessageStatus.RecipientError;
                    }
                    else if (isNOZItem)
                    {
                        nozItem.Status = (int)Enums.SystemEmailMessageStatus.RecipientError;
                    }
                    else
                    {
                        item.Status = (int)Enums.SystemEmailMessageStatus.RecipientError;
                    }

                    DataTypesHelper.LogThis("Could not send the email to receipient: " + item.EmailTo);

                    if (isOTPitem)
                    {
                        otpSystemEmailMessageRepo.SaveEmail(otpItem);
                    }
                    else if (isPDOitem)
                    {
                        pdoSystemEmailMessageRepo.SaveEmail(pdoItem);
                    }
                    else if (isNOZItem)
                    {
                        nozSystemEmailMessageRepo.SaveEmail(nozItem);
                    }
                    else
                    {
                        systemEmailMessageRepo.SaveEmail(item);
                    }
                }
                else
                {
                    if (isOTPitem)
                    {
                        otpItem.Status = (int)Enums.SystemEmailMessageStatus.RecipientError;
                    }
                    else if (isPDOitem)
                    {
                        pdoItem.Status = (int)Enums.SystemEmailMessageStatus.RecipientError;
                    }
                    else if (isNOZItem)
                    {
                        nozItem.Status = (int)Enums.SystemEmailMessageStatus.RecipientError;
                    }
                    else
                    {
                        item.Status = (int)Enums.SystemEmailMessageStatus.RecipientError;
                    }

                    DataTypesHelper.LogThis("SmtpException: " + ex.Message);

                    if (isOTPitem)
                    {
                        otpSystemEmailMessageRepo.SaveEmail(otpItem);
                    }
                    else if (isPDOitem)
                    {
                        pdoSystemEmailMessageRepo.SaveEmail(pdoItem);
                    }
                    else if (isNOZItem)
                    {
                        nozSystemEmailMessageRepo.SaveEmail(nozItem);
                    }
                    else
                    {
                        systemEmailMessageRepo.SaveEmail(item);
                    }
                }
            }
            catch (Exception ex)
            {
                if (isOTPitem)
                {
                    otpItem.Status = (int)Enums.SystemEmailMessageStatus.RecipientError;
                }
                else if (isPDOitem)
                {
                    pdoItem.Status = (int)Enums.SystemEmailMessageStatus.RecipientError;
                }
                else if (isNOZItem)
                {
                    nozItem.Status = (int)Enums.SystemEmailMessageStatus.RecipientError;
                }
                else
                {
                    item.Status = (int)Enums.SystemEmailMessageStatus.Error;
                }

                if (isOTPitem)
                {
                    otpSystemEmailMessageRepo.SaveEmail(otpItem);
                }
                else if (isPDOitem)
                {
                    pdoSystemEmailMessageRepo.SaveEmail(pdoItem);
                }
                else if (isNOZItem)
                {
                    nozSystemEmailMessageRepo.SaveEmail(nozItem);
                }
                else
                {
                    systemEmailMessageRepo.SaveEmail(item);
                }

                DataTypesHelper.LogThis("LOG1: " + ex.Message);
            }
        }