Exemplo n.º 1
0
        public bool checkMail()
        {
            const int VerarbeitungFehler                   = 0;
            const int MailLieferzeitVersandt               = 1;
            const int MailZahlungFaelligSIVersandt         = 2;
            const int MailZahlungFaelligAnfrageVersandt    = 3;
            const int MailZahlungErfolgtSIKunden           = 4;
            const int MailZahlungErfolgtSILieferanten      = 5;
            const int MailZahlungErfolgtAnfrageKunden      = 6;
            const int MailZahlungErfolgtAnfrageLieferanten = 7;
            const int MailProjektVerlauf                   = 8;



            if (MailTimerActive == false)
            {
                LoggingTool.addDatabaseLogging("EMail", 0, "Mailtimer ist deaktiviert");
                return(false);
            }
            DateTime vd;
            DateTime bd;



            using (SteinbachEntities db = new SteinbachEntities())
            {
                var sb = new StringBuilder();
                try
                {
                    vd = DateTime.Now.AddDays(14);
                    bd = DateTime.Now;


                    var lz = from l in db.projekt_anlage_lieferzeiten
                             where
                             (l.hassend == 0 || l.hassend == null) &&
                             (l.lieferzeit <= vd && l.lieferzeit >= bd) &&
                             l.versandtam == null && l.projekt != null
                             select l;

                    if (lz.Count() > 0)
                    {
                        person p;
                        foreach (projekt_anlage_lieferzeit item in lz)
                        {
                            if (item.id_personchange != null && item.id_personchange != 0)
                            {
                                p = GetPerson((int)item.id_personchange);
                            }
                            else
                            {
                                p = GetPerson((int)item.projekt.id_personchange);
                            }


                            if (p != null)
                            {
                                sb.Clear();
                                if (p.email != null && p.email != string.Empty)
                                {
                                    sb.Append("Kundenname: ");
                                    sb.AppendLine(item.projekt.kundenname);
                                    sb.Append("NB-Nr: ");
                                    sb.AppendLine(item.projekt.werftnummer);
                                    sb.Append("Projektnummer: ");
                                    sb.AppendLine(item.projekt.projektnummer);
                                    sb.Append("Liefertermin: ");
                                    sb.AppendLine(GetDate(item.lieferzeit));

                                    if (checkOutlook())
                                    {
                                        if (DoSendMail(p.email, String.Format("Projektdatenbank / Projekt {0} / Lieferzeit", item.projekt.projektnummer), sb.ToString()))
                                        {
                                            item.hassend = 1;

                                            Eventlogging.log(MailLieferzeitVersandt, "Mail versand - Lieferzeit", p.email, String.Format("Projektdatenbank / Projekt {0} / Lieferzeit", item.projekt.projektnummer));

                                            // LoggingTool.addDatabaseLogging("EMail", 99, "Mail versand - Lieferzeit", p.email, String.Format("Projektdatenbank / Projekt {0}/Lieferzeit", item.projekt.projektnummer));
                                        }
                                        else
                                        {
                                            Eventlogging.log(VerarbeitungFehler, EventLogEntryType.Error, "Fehler Mail Lieferzeit - DoSendMail = false ", p.email, String.Format("Projektdatenbank / Projekt {0} / Lieferzeit", item.projekt.projektnummer));
                                            // LoggingTool.addDatabaseLogging("EMail", 99, "Fehler Mail Lieferzeit - DoSendMail = false ", p.email, String.Format("Projektdatenbank / Projekt {0}/Lieferzeit", item.projekt.projektnummer));
                                        }
                                    }
                                    else
                                    {
                                        Eventlogging.log(VerarbeitungFehler, EventLogEntryType.Error, "Fehler Mail Lieferzeit - Outlook nicht bereit: ", p.email, String.Format("Projektdatenbank / Projekt {0}  /Lieferzeit", item.projekt.projektnummer));
                                        // LoggingTool.addDatabaseLogging("EMail", 99, "Fehler Mail Lieferzeit - Outlook nicht bereit: ", p.email, String.Format("Projektdatenbank / Projekt {0}/Lieferzeit", item.projekt.projektnummer));
                                    }
                                }
                            }
                        }

                        db.SaveChanges();
                    }



                    // Mail an Fr. Steinbach das Rechnung fällig. EMail Adresse in Tabelle Config mit Key "EMailZahlungFaellig"
                    vd = DateTime.Now;
                    var rf = from r in db.projekt_si_rgkunden
                             where r.rechnungfaellig <= vd && r.rechnungvom == null && (r.hassend == 0 || r.hassend == null) && r.projekt != null
                             select r;
                    foreach (var item in rf)
                    {
                        sb.Clear();
                        sb.Append("Erinnerung vom ");
                        sb.AppendLine(GetDate(item.rechnungfaellig));
                        sb.Append("Projektnummer : ");
                        sb.AppendLine(item.projekt.projektnummer);
                        sb.Append("Rechnungsnummer: ");
                        sb.AppendLine(item.rechnungsnr ?? " Keine Rechnungsnummer vorhanden.");


                        //var cf = db.config.Where(c => String.Compare(c.mkey, "EMailZahlungFaellig", true) == 0).FirstOrDefault();
                        // var ZahlungFaellig = Session.EMailZahlungFaellig;

                        if (checkOutlook())
                        {
                            try
                            {
                                DoSendMail(Session.EMailZahlungFaellig, String.Format("Projektdatenbank / Projekt {0} / Ausgangsrechnung / Zahlung fällig", item.projekt.projektnummer), sb.ToString());
                                //mail.sendmail(((config)cf).value, String.Format("Projektdatenbank / Projekt {0}/ Ausgangsrechnung - Zahlung fällig", item.projekt.projektnummer), sb.ToString());
                                item.hassend = 1;
                                Eventlogging.log(MailZahlungFaelligSIVersandt, "Mail versandt - Ausgangsrechnung fällig  ", Session.EMailZahlungFaellig, String.Format("Projektdatenbank / Projekt {0}/Ausgangsrechnung", item.projekt.projektnummer));
                                // LoggingTool.addDatabaseLogging("EMail", 99, "Mail versandt - Ausgangsrechnung fällig  ", Session.EMailZahlungFaellig , String.Format("Projektdatenbank / Projekt {0}/Ausgangsrechnung", item.projekt.projektnummer));
                            }
                            catch (Exception ex)
                            {
                                Eventlogging.log(VerarbeitungFehler, EventLogEntryType.Error, "Fehler Mail -Ausgangsrechnung fällig ", Session.EMailZahlungFaellig, String.Format("Projektdatenbank / Projekt {0}/Ausgangsrechnung", item.projekt.projektnummer), ex.Message);

                                //LoggingTool.addDatabaseLogging("EMail", 99, "Fehler Mail -Ausgangsrechnung fällig ", Session.EMailZahlungFaellig, String.Format("Projektdatenbank / Projekt {0}/Ausgangsrechnung", item.projekt.projektnummer), ex.Message);
                            }
                        }
                    }

                    db.SaveChanges();


                    // Version für Anfragerechnungen
                    // Mail an Fr. Steinbach das Rechnung fällig. EMail Adresse in Tabelle Config mit Key "EMailZahlungFaellig"
                    vd = DateTime.Now;
                    var rf1 = from r in db.projekt_rechnungenkunde
                              where r.rechnungfaellig <= vd && r.rechnungbezahlt == null && (r.hassend == 0 || r.hassend == null) && r.projekt != null
                              select r;
                    foreach (var item in rf1)
                    {
                        sb.Clear();
                        sb.AppendLine("Vorauftragsrechnung bzw. Sonderprojekte");
                        sb.Append("Erinnerung vom ");
                        sb.AppendLine(GetDate(item.rechnungfaellig));
                        sb.Append("Projektnummer : ");
                        sb.AppendLine(item.projekt.projektnummer);
                        sb.Append("Rechnungsnummer: ");
                        sb.AppendLine(item.rechnungsnummer ?? " Keine Rechnungsnummer vorhanden.");


                        //var cf = db.config.Where(c => String.Compare(c.mkey, "EMailZahlungFaellig", true) == 0).FirstOrDefault();
                        // var ZahlungFaellig = Session.EMailZahlungFaellig;

                        if (checkOutlook())
                        {
                            try
                            {
                                DoSendMail(Session.EMailZahlungFaellig, String.Format("Projektdatenbank / Projekt {0} / Ausgangsrechnung / Zahlung fällig", item.projekt.projektnummer), sb.ToString());
                                //mail.sendmail(((config)cf).value, String.Format("Projektdatenbank / Projekt {0}/ Ausgangsrechnung - Zahlung fällig", item.projekt.projektnummer), sb.ToString());
                                item.hassend = 1;
                                Eventlogging.log(MailZahlungFaelligAnfrageVersandt, "Mail versandt - Ausgangsrechnung fällig  ", Session.EMailZahlungFaellig, String.Format("Projektdatenbank / Projekt {0}/Ausgangsrechnung", item.projekt.projektnummer));
                                // LoggingTool.addDatabaseLogging("EMail", 99, "Mail versandt - Ausgangsrechnung fällig  ", Session.EMailZahlungFaellig , String.Format("Projektdatenbank / Projekt {0}/Ausgangsrechnung", item.projekt.projektnummer));
                            }
                            catch (Exception ex)
                            {
                                Eventlogging.log(VerarbeitungFehler, EventLogEntryType.Error, "Fehler Mail -Ausgangsrechnung fällig ", Session.EMailZahlungFaellig, String.Format("Projektdatenbank / Projekt {0}/Ausgangsrechnung", item.projekt.projektnummer), ex.Message);

                                //LoggingTool.addDatabaseLogging("EMail", 99, "Fehler Mail -Ausgangsrechnung fällig ", Session.EMailZahlungFaellig, String.Format("Projektdatenbank / Projekt {0}/Ausgangsrechnung", item.projekt.projektnummer), ex.Message);
                            }
                        }
                    }

                    db.SaveChanges();



                    // Mail an Fr. Seider-Manske das Rechnungseingang erfolgt. EMail Adresse in hinterlegt in Tabelle Config mit Key "EMailZahlungErfolgt"
                    var mb = from b in db.projekt_si_rgkunden
                             where b.rechnungvom != null && (b.emailbezahlt == 0 || b.emailbezahlt == null) && b.id_projekt != null && b.projekt != null
                             select b;

                    foreach (var item in mb)
                    {
                        sb.Clear();
                        sb.Append("Rechnung bezahlt : ");
                        sb.AppendLine(GetDate(item.rechnungvom));
                        sb.Append("Projektnummer : ");
                        sb.AppendLine(item.projekt.projektnummer);
                        sb.Append("Rechnungsnummer: ");
                        sb.AppendLine(item.rechnungsnr ?? " Keine Rechnungsnummer vorhanden.");


                        //var cf1 = db.config.Where(c => String.Compare(c.mkey, "EMailZahlungErfolgt", true) == 0).FirstOrDefault();
                        string ZahlungErfolgt = Session.EMailZahlungErfolgt;

                        if (checkOutlook())
                        {
                            try
                            {
                                DoSendMail(ZahlungErfolgt, String.Format("Projektdatenbank  / Projekt {0}  / Ausgangsrechnung bezahlt", item.projekt.projektnummer), sb.ToString());
                                item.emailbezahlt = 1;
                                Eventlogging.log(MailZahlungErfolgtSIKunden, "Mail versand - Ausgangsrechnung bezahlt ", ZahlungErfolgt, String.Format("Projektdatenbank / Projekt {0}/ Ausgangsrechnung bezahlt", item.projekt.projektnummer));
                                // LoggingTool.addDatabaseLogging("EMail", 99, "Mail versand - Ausgangsrechnung bezahlt ", ZahlungErfolgt, String.Format("Projektdatenbank / Projekt {0}/ Ausgangsrechnung bezahlt", item.projekt.projektnummer));
                            }
                            catch (Exception ex)
                            {
                                Eventlogging.log(VerarbeitungFehler, EventLogEntryType.Error, "Fehler Mail - Ausgangsrechnung bezahlt ", ZahlungErfolgt, String.Format("Projektdatenbank / Projekt {0}/ Ausgangsrechnung bezahlt", item.projekt.projektnummer), ex.Message);
                                // LoggingTool.addDatabaseLogging("EMail", 99, "Fehler Mail - Ausgangsrechnung bezahlt ", ZahlungErfolgt, String.Format("Projektdatenbank / Projekt {0}/ Ausgangsrechnung bezahlt", item.projekt.projektnummer), ex.Message);
                            }
                        }
                    }

                    db.SaveChanges();

                    // Version Anfragerechnungen
                    // Mail an Fr. Seider-Manske das Rechnungseingang erfolgt. EMail Adresse in hinterlegt in Tabelle Config mit Key "EMailZahlungErfolgt"
                    var mb1 = from b in db.projekt_rechnungenkunde
                              where b.rechnungbezahlt != null && (b.emailbezahlt == 0 || b.emailbezahlt == null) && b.id_projekt != null && b.projekt != null
                              select b;

                    foreach (var item in mb1)
                    {
                        sb.Clear();
                        sb.AppendLine("Vorauftragsrechnung bzw. Sonderprojekte");
                        sb.Append("Rechnung bezahlt : ");
                        sb.AppendLine(GetDate(item.rechnungbezahlt));
                        sb.Append("Projektnummer : ");
                        sb.AppendLine(item.projekt.projektnummer);
                        sb.Append("Rechnungsnummer: ");
                        sb.AppendLine(item.rechnungsnummer ?? " Keine Rechnungsnummer vorhanden.");


                        //var cf1 = db.config.Where(c => String.Compare(c.mkey, "EMailZahlungErfolgt", true) == 0).FirstOrDefault();
                        string ZahlungErfolgt = Session.EMailZahlungErfolgt;

                        if (checkOutlook())
                        {
                            try
                            {
                                DoSendMail(ZahlungErfolgt, String.Format("Projektdatenbank  / Projekt {0}  / Ausgangsrechnung bezahlt", item.projekt.projektnummer), sb.ToString());
                                item.emailbezahlt = 1;
                                Eventlogging.log(MailZahlungErfolgtAnfrageKunden, "Mail versand - Ausgangsrechnung bezahlt ", ZahlungErfolgt, String.Format("Projektdatenbank / Projekt {0}/ Ausgangsrechnung bezahlt", item.projekt.projektnummer));
                                // LoggingTool.addDatabaseLogging("EMail", 99, "Mail versand - Ausgangsrechnung bezahlt ", ZahlungErfolgt, String.Format("Projektdatenbank / Projekt {0}/ Ausgangsrechnung bezahlt", item.projekt.projektnummer));
                            }
                            catch (Exception ex)
                            {
                                Eventlogging.log(VerarbeitungFehler, EventLogEntryType.Error, "Fehler Mail - Ausgangsrechnung bezahlt ", ZahlungErfolgt, String.Format("Projektdatenbank / Projekt {0}/ Ausgangsrechnung bezahlt", item.projekt.projektnummer), ex.Message);
                                // LoggingTool.addDatabaseLogging("EMail", 99, "Fehler Mail - Ausgangsrechnung bezahlt ", ZahlungErfolgt, String.Format("Projektdatenbank / Projekt {0}/ Ausgangsrechnung bezahlt", item.projekt.projektnummer), ex.Message);
                            }
                        }
                    }

                    db.SaveChanges();



                    // Mail an Fr. Seider-Manske das Lieferantenrechnung bezahlt. EMail Adresse in hinterlegt in Tabelle Config mit Key "EMailZahlungErfolgt"
                    var lr = from b in db.projekt_si_rglieferanten
                             where b.lieferantbezahlt != null && (b.emailbezahlt == 0 || b.emailbezahlt == null) && b.id_projekt != null && b.projekt != null
                             select b;

                    foreach (var item in lr)
                    {
                        sb.Clear();
                        sb.Append("Rechnung bezahlt : ");
                        sb.AppendLine(GetDate(item.lieferantbezahlt));
                        sb.Append("Projektnummer : ");
                        sb.AppendLine(item.projekt.projektnummer);
                        sb.Append("Rechnungsnummer: ");
                        sb.AppendLine(item.lieferantnummer ?? " Keine Rechnungsnummer vorhanden.");
                        sb.Append("Lieferant: ");
                        sb.AppendLine(item.lieferantname ?? " Kein Lieferantenname vorhanden.");


                        string ZahlungErfolgt = Session.EMailZahlungErfolgt;

                        if (checkOutlook())
                        {
                            try
                            {
                                DoSendMail(ZahlungErfolgt, String.Format("Projektdatenbank  / Projekt {0}  / Lieferantenrechnung bezahlt", item.projekt.projektnummer), sb.ToString());
                                item.emailbezahlt = 1;
                                Eventlogging.log(MailZahlungErfolgtSILieferanten, "Mail versand - Lieferantenrechnung bezahlt ", ZahlungErfolgt, String.Format("Projektdatenbank / Projekt {0}/ Ausgangsrechnung bezahlt", item.projekt.projektnummer));
                                // LoggingTool.addDatabaseLogging("EMail", 99, "Mail versand - Ausgangsrechnung bezahlt ", ZahlungErfolgt, String.Format("Projektdatenbank / Projekt {0}/ Ausgangsrechnung bezahlt", item.projekt.projektnummer));
                            }
                            catch (Exception ex)
                            {
                                Eventlogging.log(VerarbeitungFehler, EventLogEntryType.Error, "Fehler Mail - Lieferantenrechnung bezahlt", ZahlungErfolgt, String.Format("Projektdatenbank / Projekt {0}/ Ausgangsrechnung bezahlt", item.projekt.projektnummer), ex.Message);
                                // LoggingTool.addDatabaseLogging("EMail", 99, "Fehler Mail - Ausgangsrechnung bezahlt ", ZahlungErfolgt, String.Format("Projektdatenbank / Projekt {0}/ Ausgangsrechnung bezahlt", item.projekt.projektnummer), ex.Message);
                            }
                        }
                    }

                    db.SaveChanges();



                    // Version Anfragerechnungen
                    // Mail an Fr. Seider-Manske das Lieferantenrechnung bezahlt. EMail Adresse in hinterlegt in Tabelle Config mit Key "EMailZahlungErfolgt"
                    var lr1 = from b in db.projekt_rechnungenlieferant
                              where b.rechnungbezahlt != null && (b.emailbezahlt == 0 || b.emailbezahlt == null) && b.id_projekt != null && b.projekt != null
                              select b;

                    foreach (var item in lr1)
                    {
                        sb.Clear();
                        sb.AppendLine("Vorauftragsrechnung bzw. Sonderprojekte");
                        sb.Append("Rechnung bezahlt : ");
                        sb.AppendLine(GetDate(item.rechnungbezahlt));
                        sb.Append("Projektnummer : ");
                        sb.AppendLine(item.projekt.projektnummer);
                        sb.Append("Rechnungsnummer: ");
                        sb.AppendLine(item.rechnungsnummer ?? " Keine Rechnungsnummer vorhanden.");
                        sb.Append("Lieferant: ");
                        sb.AppendLine(item.lieferantname ?? " Kein Lieferantenname vorhanden.");


                        string ZahlungErfolgt = Session.EMailZahlungErfolgt;

                        if (checkOutlook())
                        {
                            try
                            {
                                DoSendMail(ZahlungErfolgt, String.Format("Projektdatenbank  / Projekt {0}  / Lieferantenrechnung bezahlt", item.projekt.projektnummer), sb.ToString());
                                item.emailbezahlt = 1;
                                Eventlogging.log(MailZahlungErfolgtAnfrageLieferanten, "Mail versand - Lieferantenrechnung Anfragerechnungen bezahlt ", ZahlungErfolgt, String.Format("Projektdatenbank / Projekt {0}/ Ausgangsrechnung bezahlt", item.projekt.projektnummer));
                                // LoggingTool.addDatabaseLogging("EMail", 99, "Mail versand - Ausgangsrechnung bezahlt ", ZahlungErfolgt, String.Format("Projektdatenbank / Projekt {0}/ Ausgangsrechnung bezahlt", item.projekt.projektnummer));
                            }
                            catch (Exception ex)
                            {
                                Eventlogging.log(VerarbeitungFehler, EventLogEntryType.Error, "Fehler Mail - Lieferantenrechnung bezahlt", ZahlungErfolgt, String.Format("Projektdatenbank / Projekt {0}/ Ausgangsrechnung bezahlt", item.projekt.projektnummer), ex.Message);
                                // LoggingTool.addDatabaseLogging("EMail", 99, "Fehler Mail - Ausgangsrechnung bezahlt ", ZahlungErfolgt, String.Format("Projektdatenbank / Projekt {0}/ Ausgangsrechnung bezahlt", item.projekt.projektnummer), ex.Message);
                            }
                        }
                    }

                    db.SaveChanges();



                    // Mail wenn in Projektverlauf Datum gesetzt wurde
                    vd = DateTime.Now.AddDays(-4);
                    bd = DateTime.Now;

                    var pv = from p in db.projekt_verlaufe
                             where p.datum >= vd && p.datum <= bd && (p.hassend == 0 || p.hassend == null) && p.id_projekt != null
                             select p;
                    foreach (var item in pv)
                    {
                        sb.Clear();
                        sb.Append("Erinnerung vom : ");
                        sb.AppendLine(GetDate(item.datum));
                        sb.AppendLine("Bemerkung :");
                        sb.AppendLine(item.bemerkung);

                        var cf1 = db.personen.Where(c => c.id == item.id_personchange).FirstOrDefault();

                        if (checkOutlook())
                        {
                            if (DoSendMail(((person)cf1).email, String.Format("Projektdatenbank / Projekt {0} / Verlauf", item.projekt.projektnummer), sb.ToString()))
                            {
                                item.hassend = 1;
                                Eventlogging.log(MailProjektVerlauf, "Mail versandt - Projektverlauf ", ((person)cf1).email, String.Format("Projektdatenbank / Projekt {0}/ Projektverlauf", item.projekt.projektnummer), item.datum.ToString(), item.bemerkung);
                                // LoggingTool.addDatabaseLogging("EMail", 99, "Mail versandt - Projektverlauf ", ((person)cf1).email, String.Format("Projektdatenbank / Projekt {0}/ Projektverlauf", item.projekt.projektnummer), item.datum.ToString(), item.bemerkung);
                            }
                            else
                            {
                                Eventlogging.log(VerarbeitungFehler, EventLogEntryType.Error, "Fehler Mail - Projektverlauf ", ((person)cf1).email, String.Format("Projektdatenbank / Projekt {0}/ verlauf", item.projekt.projektnummer), item.datum.ToString(), item.bemerkung);
                                // LoggingTool.addDatabaseLogging("EMail", 99, "Fehler Mail - Projektverlauf ", ((person)cf1).email, String.Format("Projektdatenbank / Projekt {0}/ verlauf", item.projekt.projektnummer), item.datum.ToString(), item.bemerkung);
                            }
                        }
                    }


                    db.SaveChanges();
                    return(true);
                }



                //return false;



                catch (Exception ex)
                {
                    db.SaveChanges();
                    Eventlogging.log(VerarbeitungFehler, EventLogEntryType.Error, "Mailversand gescheitert", ex.Message, ex.InnerException == null ? "no innerException" : ex.InnerException.Message);
                    //LoggingTool.addDatabaseLogging("EMail", 99, "Mailversand gescheitert", ex.Message, ex.InnerException == null ? "no innerException" : ex.InnerException.Message);
                    LoggingTool.LogExeption(ex, "checkMail", "");
                    return(false);
                }
            }
        }