public void SendNewQualityReportMail(QualityReport mailreport) { try { KvalPortDbEntities db = new KvalPortDbEntities(); QualityReport _report = db.QualityReports.Where(r => r.Id == mailreport.Id).FirstOrDefault(); if (_report != null) { ObservableCollection <QRStatusEmailNotification> SelectedOfficeQREmailNotifications = new ObservableCollection <QRStatusEmailNotification>(from qrEmail in db.QRStatusEmailNotifications where qrEmail.OfficeId == _report.OfficeId && qrEmail.StatusId == 1 select qrEmail); if (SelectedOfficeQREmailNotifications.Count > 0) { ObservableCollection <string> sentEmails = new ObservableCollection <string>(); EmailSent es; QRLog qrLog = new QRLog(); qrLog.Cost = 0; qrLog.Created = DateTime.Now; qrLog.CreatedBy = _report.CreatedBy;; qrLog.LogTypeId = 3; // (int)QRLogTypesEnum.Programåtgärd; qrLog.QualityReportId = _report.Id; qrLog.Deleted = false; qrLog.Subject = "Epost har skickats (rapport skapad)"; qrLog.Description = ""; StringBuilder descrp = new StringBuilder(); string EmailBody = CreatedQREmailNewReport(_report); foreach (QRStatusEmailNotification not in SelectedOfficeQREmailNotifications) { es = new EmailSent(); es.Automatic = true; es.Created = DateTime.Now; es.FromAdress = "*****@*****.**"; es.ModuleId = 1; es.OfficeId = _report.OfficeId; es.Password = "******"; es.Username = "******"; es.UseSSL = true; es.Port = 25; es.Server = "localhost"; es.Subject = "Kvalitetsrapport"; es.ToAdress = ""; es.SendMessage = "test"; es.Sent = false; if (not.IsEmployee) { if (not.Employee.Email == null || not.Employee.Email.Count() < 1) { descrp.AppendLine("Epost kunde inte skickas till användaren: " + not.Employee.FName + " " + not.Employee.LName + ". Orsak: Epost-adress saknades"); } else if (not.Employee.Email.Count() < 5) { descrp.AppendLine("Epost kunde inte skickas till användaren: " + not.Employee.FName + " " + not.Employee.LName + ". Orsak: Epost-adress felaktig"); } else { es.Body = EmailBody; descrp.AppendLine("Epost har skickats till : " + not.Employee.FName + " " + not.Employee.LName + " (" + not.Employee.Email + ")"); es.ToAdress = not.Employee.Email; if (sentEmails.Contains(es.ToAdress)) { es.Sent = true; } else { sentEmails.Add(es.ToAdress); es.SendMessage = SendEmail(es); } db.EmailSents.Add(es); } } else if (not.IsMailContact) { if (not.EmailContact.Email == null || not.EmailContact.Email.Count() < 1) { descrp.AppendLine("Epost kunde inte skickas till epost-kontakten: " + not.EmailContact.Name + ". Orsak: Epost-adress saknades"); } else if (not.EmailContact.Email.Count() < 5) { descrp.AppendLine("Epost kunde inte skickas till epost-kontakten: " + not.EmailContact.Name + ". Orsak: Epost-adress felaktig"); } else { es.Body = EmailBody; descrp.AppendLine("Epost har skickats till epost-kontkten: " + not.EmailContact.Email + " (" + not.EmailContact.Email + ")"); es.ToAdress = not.EmailContact.Email; if (sentEmails.Contains(es.ToAdress)) { es.Sent = true; } else { es.SendMessage = SendEmail(es); sentEmails.Add(es.ToAdress); } db.EmailSents.Add(es); } } else if (not.IsReportRole) { if (not.ReportRoll == "Responsible") { if (_report.QRResponsible.Employee.Email == null || _report.QRResponsible.Employee.Email.Count() < 1) { descrp.AppendLine("Epost kunde inte skickas till handläggaren: " + _report.QRResponsible.Employee.FName + " " + _report.QRResponsible.Employee.LName + ". Orsak: Epost-adress saknades"); } else if (_report.QRResponsible.Employee.Email.Count() < 5) { descrp.AppendLine("Epost kunde inte skickas till handläggaren: " + _report.QRResponsible.Employee.FName + " " + _report.QRResponsible.Employee.LName + ". Orsak: Epost-adress felaktig"); } else { es.Body = EmailBody; descrp.AppendLine("Epost har skickats till handläggaren: " + _report.QRResponsible.Employee.FName + " " + _report.QRResponsible.Employee.LName + " (" + _report.QRResponsible.Employee.Email + ")"); es.ToAdress = _report.QRResponsible.Employee.Email; if (sentEmails.Contains(es.ToAdress)) { es.Sent = true; } else { es.SendMessage = SendEmail(es); sentEmails.Add(es.ToAdress); } db.EmailSents.Add(es); } } else if (not.ReportRoll == "CausedBy") { if (_report.OfficeDepartment.Employee.Email == null || _report.OfficeDepartment.Employee.Email.Count() < 1) { descrp.AppendLine("Epost kunde inte skickas till avdelningsansvarig för orsakad av: " + _report.OfficeDepartment.Employee.FName + " " + _report.OfficeDepartment.Employee.LName + ". Orsak: Epost-adress saknades"); } else if (_report.OfficeDepartment.Employee.Email.Count() < 5) { descrp.AppendLine("Epost kunde inte skickas till avdelningsansvarig för orsakad av: " + _report.OfficeDepartment.Employee.FName + " " + _report.OfficeDepartment.Employee.LName + ". Orsak: Epost-adress felaktig"); } else { es.Body = EmailBody; descrp.AppendLine("Epost har skickats till avdelningsansvarig för orsakad av: " + _report.OfficeDepartment.Employee.FName + " " + _report.OfficeDepartment.Employee.LName); es.ToAdress = _report.OfficeDepartment.Employee.Email; if (sentEmails.Contains(es.ToAdress)) { es.Sent = true; } else { es.SendMessage = SendEmail(es); sentEmails.Add(es.ToAdress); } db.EmailSents.Add(es); } } else if (not.ReportRoll == "CreatedBy") { if (_report.Employee.Email == null || _report.Employee.Email.Count() < 1) { descrp.AppendLine("Epost kunde inte skickas till användaren som skapade ärendet: " + _report.Employee.FName + " " + _report.Employee.LName + ". Orsak: Epost-adress saknades"); } else if (_report.Employee.Email.Count() < 5) { descrp.AppendLine("Epost kunde inte skickas till användaren som skapade ärendet: " + _report.Employee.FName + " " + _report.Employee.LName + ". Orsak: Epost-adress felaktig"); } else { es.Body = EmailBody; descrp.AppendLine("Epost har skickats till användaren som skapade ärendet: " + _report.Employee.FName + " " + _report.Employee.LName + " (" + _report.Employee.Email + ")"); es.ToAdress = _report.Employee.Email; if (sentEmails.Contains(es.ToAdress)) { es.Sent = true; } else { es.SendMessage = SendEmail(es); sentEmails.Add(es.ToAdress); } db.EmailSents.Add(es); } } } } if (descrp.Length > 5) { qrLog.Description = descrp.ToString(); db.QRLogs.Add(qrLog); } db.SaveChanges(); } } } catch (Exception ex) { //IsLoading = false; // ErrorWindow.CreateNew("Kunde inte skapa och skicka email. Felmeddelande: " + ex.Message); } }
private void GetReportData() { DbContext = new Service1Client(Service1Client.EndpointConfiguration.BasicHttpBinding_IService1); var data = DbContext.GetQualityReportById(Application.Current.Properties["UN"].ToString(), Application.Current.Properties["PW"].ToString(), Application.Current.Properties["Ucid"].ToString(), IniQRId); ReportData = new QualityReport(); QualityReport qualityReport = new QualityReport(); qualityReport.Id = data.Id; qualityReport.ReportNr = data.ReportNr; qualityReport.DateCreated = data.Created; qualityReport.Status = data.Status; TimeSpan span = DateTime.Now - data.Created; qualityReport.Interval = span.Days + " dag " + span.Hours + " tim"; if (data.CreatedByEmployee != null) { Employee createdBy = new Employee(); createdBy.Id = data.CreatedByEmployee.Id; createdBy.Name = data.CreatedByEmployee.FName + " " + data.CreatedByEmployee.LName; qualityReport.CreatedByEmployee = createdBy; } if (data.OfficeData != null) { Office off = new Office(); off.Id = data.OfficeData.Id; off.Name = data.OfficeData.Name; qualityReport.Office = off; } //"Felbeskrivning" the following 3 properties qualityReport.Department = data.OfficeDepartment; qualityReport.DepartmentTask = data.OfficeDepartmentTask; qualityReport.OfficeDepartmentTaskId = data.OfficeDepartmentTaskId; qualityReport.Description = data.Description; //"Trolig orsak" the following 3 properties qualityReport.QRAnalysisHeaderId = data.QRAnalysisHeaderId; qualityReport.QRAnalysisHeader = data.QRAnalysisHeader; qualityReport.AnalysisText = data.AnalysisText; qualityReport.AnalysisCausedById = data.AnalysisCausedById; if (data.CausedByEmployees != null) { qualityReport.CausedByEmployees = new ObservableCollection <Employee>(); Employee causedBy; foreach (var emp in data.CausedByEmployees) { causedBy = new Employee(); causedBy.Id = emp.Id; causedBy.Name = emp.FName + " " + emp.LName; qualityReport.CausedByEmployees.Add(causedBy); } } //"Slutlig åtgärd" the following 4 properties qualityReport.QRFinalDecisionHeader = data.QRFinalDecisionHeader; qualityReport.FinalDecisionText = data.FinalDecisionText; qualityReport.FinalDecisionCost = data.FinalDecisionCost; qualityReport.IsRepeatRepair = data.IsRepeatRepair; if (data.ResponsibleEmployee != null) { Employee responsible = new Employee(); responsible.Id = data.ResponsibleEmployee.Id; responsible.Name = data.ResponsibleEmployee.FName + " " + data.ResponsibleEmployee.LName; qualityReport.ResponsibleEmployee = responsible; } if (data.QRAttachedFileData != null) { QRAttachedFile attachedFile; AllImages = new ObservableCollection <QRAttachedFile>(); foreach (var img in data.QRAttachedFileData) { attachedFile = new QRAttachedFile(); attachedFile.Id = img.Id; attachedFile.FileName = img.FileName; attachedFile.FilePath = img.FilePath; AllImages.Add(attachedFile); } } qualityReport.AoNr = data.AoNr; qualityReport.RegNr = data.RegNr; qualityReport.TotalCost = data.TotalCost; qualityReport.Year = data.Year; qualityReport.Deleted = data.Deleted; if (data.QRLogs != null) { qualityReport.QRLog = new ObservableCollection <QRLog>(); QRLog qrlog; foreach (var log in data.QRLogs.OrderBy(o => o.Id)) { qrlog = new QRLog(); qrlog.QRId = log.QualityReportId; qrlog.Id = log.Id; qrlog.LogTypeId = log.LogTypeId; qrlog.LogTypeText = log.LogTypeText; qrlog.Subject = log.Subject; qrlog.Created = log.Created; qrlog.Description = log.Description; if (log.CreatedEmployee != null) { Employee emp = new Employee(); emp.Id = log.CreatedEmployee.Id; emp.Name = log.CreatedEmployee.FName + " " + log.CreatedEmployee.LName; qrlog.CreatedByEmployee = emp; } qualityReport.QRLog.Add(qrlog); } } ReportData = qualityReport; }