コード例 #1
0
        static void Main(string[] args)
        {
            try
            {
                config();
                DateTime         dateFrom = DateTime.Now.AddDays(numDays * -1);
                cbpmqdbEntities1 db       = new cbpmqdbEntities1();
                //Find AS records with an entry type of 3


                var asr = from p in db.AS_Record.AsNoTracking() where p.file_date >= dateFrom &&
                          p.entry_type == 3
                          //&& p.importer_of_record=="59-266395400"

                          select p;
                //if (singleBondToCheck != "")
                //{
                //    q = (from p in db.vType3EntriesWithBO
                //         where p.file_date >= dateFrom && p.entry_type == 3
                //         && p.bond_number.Contains(singleBondToCheck)
                //         select p).Take(1);
                //}

                logger.Info("Found " + asr.Count() + " AS Records");
                //for(int aC=0;aC<asr.Count();aC++)
                foreach (AS_Record asRecord in asr.ToList())
                {
                    //    AS_Record asRecord = asr.
                    //get the bond record for this
                    var       bor      = from p in db.BO_Record.AsNoTracking() where p.bond_number == asRecord.bond_number orderby p.file_date descending select p;
                    BO_Record boRecord = bor.First();

                    logger.Info("Processing Bond Number " + asRecord.bond_number +
                                ", Entry Number " + asRecord.entry_number1 +
                                ", Entry Date " + asRecord.entry_date + ", Effective Date " +
                                boRecord.bond_effective_date + ", Importer " +
                                asRecord.importer_of_record + " " + boRecord.importer_name + ", File date " + asRecord.file_date.ToShortDateString());

                    //See if there's already an email sent for it
                    var e = from p in db.ASAQEmails.AsNoTracking()
                            where
                            p.BondNumber == asRecord.bond_number &&
                            p.EntryDate == asRecord.entry_date &&
                            p.EffectiveDate == boRecord.bond_effective_date &&
                            p.Importer == asRecord.importer_of_record &&
                            p.EntryNumber == asRecord.entry_number1 &&
                            (p.FileDate == asRecord.file_date || p.FileDate == null)
                            select p;
                    if (e.Count() > 0)
                    {
                        logger.Info("Email for Bond Number " + asRecord.bond_number +
                                    ", Entry Date " + asRecord.entry_date + ", Effective Date " +
                                    ", Entry Number " + asRecord.entry_number1 +
                                    boRecord.bond_effective_date + ", Importer " +
                                    asRecord.importer_of_record + ", File date " + asRecord.file_date.ToShortDateString() + " already sent.");
                        continue;
                    }

                    //Create and send email
                    logger.Info("Email for Bond Number " + asRecord.bond_number +
                                ", Entry Date " + asRecord.entry_date + ", Effective Date " +
                                ", Entry Number " + asRecord.entry_number1 +
                                boRecord.bond_effective_date + ", Importer " +
                                asRecord.importer_of_record + ", File date " +
                                asRecord.file_date.ToShortDateString() + " has NOT BEEN sent.");
                    //logger.Info("Sendmail has been commented out!");

                    Thread.Sleep(3000);
                    sendMail(asRecord, boRecord, simulateOnly);

                    if (!simulateOnly)
                    {
                        //Add "mail sent" record for this AS record
                        ASAQEmail asaq = new ASAQEmail();
                        asaq.BondNumber    = asRecord.bond_number;
                        asaq.EntryDate     = asRecord.entry_date;
                        asaq.EffectiveDate = boRecord.bond_effective_date;
                        asaq.Importer      = asRecord.importer_of_record;
                        asaq.EmailSentDate = DateTime.Now;
                        asaq.EntryNumber   = asRecord.entry_number1;
                        asaq.FileDate      = asRecord.file_date;
                        asaq.SentTo        = toEmails;
                        db.ASAQEmails.Add(asaq);
                        db.SaveChanges();
                    }
                }
            }
            catch (Exception e)
            {
                logger.Error(e.Message);
                return;
            }
        }
コード例 #2
0
        private static void sendMail(AS_Record asRecord, BO_Record boRecord, bool simulateOnly)
        {
            try
            {
                body  = "Importer of Record: <importer>\r\nCustom Bond Number: <bondnumber>\r\nBond Amount: <bondamount>\r\nEffective Date: <effectivedate>\r\nBond Type: <bondtype>\r\n";
                body += "Surety Code: <suretycode>\r\nDate of Entry: <dateofentry>\r\nFiler Code: <filercode>\r\nEntry Number: <entrynumber>\r\nEntry Type: <entrytype>\r\n";
                body += "District/Port of Entry: <portofentry>\r\nValue: <value>\r\nEstimated Duty: <duty>\r\nEstimated Taxes: <taxes>\r\nEstimated Fees: <fees>\r\nEstimated ADD: <add>\r\nEstmated CVD: <cvd>\r\n";
                body += "Estimated Bonded ADD: <bondadd>\r\nEstmated Bonded CVD: <bondcvd>\r\n";
                body += "File Date: <filedate>\r\n";
                body += "\r\n\r\n";
                body += "The Customs Bond Desk is required to review this entry detail with the Customs Broker \r\nand alert IFIC Underwriting for the possible need to collateralize the Custom Bond.";

                bodyReplace("<importer>", asRecord.importer_of_record + " " + boRecord.importer_name);
                bodyReplace("<bondnumber>", asRecord.bond_number);
                bodyReplace("<bondamount>", String.Format("{0:C0}", boRecord.bond_liability_amount));
                if (boRecord.bond_effective_date == null)
                {
                    bodyReplace("<effectivedate>", "no effective date");
                }
                else
                {
                    bodyReplace("<effectivedate>", ((DateTime)boRecord.bond_effective_date).ToShortDateString());
                }
                bodyReplace("<bondtype>", asRecord.bond_type.ToString() + " " + getBondType(asRecord.bond_type.ToString()));
                bodyReplace("<suretycode>", asRecord.surety_code);
                bodyReplace("<dateofentry>", ((DateTime)asRecord.entry_date).ToShortDateString());
                bodyReplace("<filercode>", asRecord.filer_code1 + " " + getFilerCode(asRecord.filer_code1));
                bodyReplace("<entrynumber>", asRecord.entry_number1);
                bodyReplace("<entrytype>", asRecord.entry_type + " " + getEntryType(asRecord.entry_type.ToString()));
                bodyReplace("<portofentry>", asRecord.district_port_of_entry1.ToString() + " " + getPortName(asRecord.district_port_of_entry1.ToString()));
                bodyReplace("<value>", String.Format("{0:C0}", asRecord.value));
                bodyReplace("<duty>", String.Format("{0:C}", asRecord.estimated_duty));
                bodyReplace("<taxes>", String.Format("{0:C}", asRecord.estimated_taxes));
                bodyReplace("<fees>", String.Format("{0:C}", asRecord.estimated_fee));
                bodyReplace("<add>", String.Format("{0:C}", asRecord.estimated_antidumping_duty));
                bodyReplace("<cvd>", String.Format("{0:C}", asRecord.estimated_countervailing_duty));
                bodyReplace("<bondadd>", String.Format("{0:C}", asRecord.bonded_antidumping_duty));
                bodyReplace("<bondcvd>", String.Format("{0:C}", asRecord.bonded_countervailing_duty));
                bodyReplace("<filedate>", String.Format("{0:C}", asRecord.file_date.ToShortDateString()));


                if (!simulateOnly)
                {
                    SmtpClient client    = new SmtpClient(smtpServer);
                    var        credArray = creds.Split('|');
                    client.Credentials           = new NetworkCredential(credArray[0], credArray[1]);
                    client.UseDefaultCredentials = false;
                    client.DeliveryMethod        = SmtpDeliveryMethod.Network;
                    MailAddress from = new MailAddress(fromEmail);
                    MailMessage msg  = new MailMessage();
                    msg.From = from;
                    foreach (string s in toEmails.Split(','))
                    {
                        msg.To.Add(s);
                    }

                    msg.Subject = "Alert: An ADD/CVD entry has been posted against a Custom Bond. Principal: " + boRecord.importer_name + " TIN: " +
                                  asRecord.importer_of_record + " Entry: " + asRecord.entry_number1;
                    msg.Body              = body;
                    msg.BodyEncoding      = System.Text.Encoding.UTF8;
                    msg.SubjectEncoding   = System.Text.Encoding.UTF8;
                    client.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback);
                    string userState = "type 3 message";
                    logger.Info("Sending message:");
                    logger.Info(body);
                    client.SendAsync(msg, userState);
                }
                else
                {
                    logger.Info("simulateOnly is TRUE. Not sending email, only logging what WOULD be sent.");
                    logger.Info(body);
                }
            }
            catch (Exception ex)
            {
                logger.Error("Sendmail: " + asRecord.importer_of_record + " " + boRecord.importer_name + " " + asRecord.entry_number1 + "  " + ex.Message);
                return;
            }
        }