Пример #1
0
        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;
        }