Exemple #1
0
        public static void sendEmailNew(
            string nrpApproval,
            string subject,
            string tamplate,
            trSPD spd,
            string claimApprove,
            string statusClaim,
            string urltarget,
            string indexLevel)
        {
            using (dsSPDDataContext ctx = new dsSPDDataContext())
            {
                //informasi approver
                var approval = ctx.msKaryawans.FirstOrDefault(o => o.nrp == nrpApproval);

                //informasi requestor
                var karyawan = ctx.msKaryawans.FirstOrDefault(o => o.nrp == spd.nrp);

                var informasiApproval = ctx.ApprovalStatus.Where(o => o.NoSPD == spd.noSPD);

                string trtd = string.Empty;

                foreach (var item in informasiApproval.OrderBy(o => o.IndexLevel))
                {
                    string statusApp = "Belum diapprove";

                    if (item.Status != null)
                    {
                        if (item.Status.Value == true)
                        {
                            statusApp = "Approved";
                        }
                        else
                        {
                            statusApp = "Rejected";
                        }
                    }
                    ;

                    var modifiedDate = item.ModifiedDate != null?item.ModifiedDate.Value.ToString("dd MMMM yyyy HH:mm") : "-";

                    trtd +=
                        "<tr>" +
                        "<td>" + item.IndexLevel.ToString() + "</td>" +
                        "<td>" + item.ApprovalRule.Deskripsi + "</td>" +
                        "<td>" + item.Nama + "</td>" +
                        "<td>" + modifiedDate + "</td>" +
                        "<td>" + statusApp + "</td>" +
                        "</tr>";
                }
                ;

                var tamplatesSPD = "<table><tr><th>No</th><th colspan='3' style='text-align:center;'>Detail Data</th><th>Status</th></tr>" + trtd + "</table>";

                EspdEmail espdEmail = new EspdEmail();

                //encrypt nrp
                espdEmail.nCrypt = Encrypto.Encrypt(nrpApproval);

                //encrypt email
                string toAddress = "";
                if (spd.nrp.Equals("99999999"))
                {
                    espdEmail.eCrypt = Encrypto.Encrypt(string.IsNullOrEmpty(spd.email) ? "" : spd.email);
                    if (tamplate.ToLower().Contains("informasi") || tamplate.ToLower().Contains("notifexpired"))
                    {
                        toAddress = string.IsNullOrEmpty(spd.email) ? "" : spd.email;
                    }
                    else
                    {
                        toAddress = approval.EMail;
                    }
                }

                //
                //
                else
                {
                    espdEmail.eCrypt = Encrypto.Encrypt(approval.EMail);
                    toAddress        = approval.EMail;
                }

                //encrypt nospd
                espdEmail.sCrypt = Encrypto.Encrypt(spd.noSPD);

                espdEmail.NoSPD        = spd.noSPD;
                espdEmail.approverName = approval.namaLengkap;

                espdEmail.spdRequester         = spd.namaLengkap;
                espdEmail.nrpRequester         = spd.nrp;
                espdEmail.statusName           = (string.IsNullOrEmpty(statusClaim) == true ? spd.status : statusClaim);
                espdEmail.noHp                 = spd.NoHP;
                espdEmail.golongan             = spd.idGolongan;
                espdEmail.jabatan              = spd.jabatan;
                espdEmail.organisasiUnit       = karyawan.organisasiUnit;
                espdEmail.companyCode          = karyawan.companyCode;
                espdEmail.personalArea         = karyawan.personelArea;
                espdEmail.personelSubArea      = karyawan.pSubArea;
                espdEmail.costCenterPembebanan = spd.costCenter;
                espdEmail.tempatTujuan         = !string.IsNullOrEmpty(spd.tempatTujuanLain) ? spd.Tujuan + " - " + spd.tempatTujuanLain : spd.Tujuan + " - " + spd.companyCodeTujuan + " - " + spd.personelAreaTujuan + " - " + spd.pSubAreaTujuan;
                espdEmail.keperluan            = spd.msKeperluan.keperluan + " - " + spd.ketKeperluan;
                espdEmail.tanggalBerangkat     = spd.tglBerangkat.ToString("dd MMMM yyyy");
                espdEmail.jamBerangkat         = spd.jamBerangkat;
                espdEmail.menitBerangkat       = spd.menitBerangkat;
                espdEmail.tanggalKembali       = spd.tglKembali.ToString("dd MMMM yyyy");
                espdEmail.jamKembali           = spd.jamKembali;
                espdEmail.menitKembali         = spd.menitKembali;
                espdEmail.angkutan             = spd.idAngkutan != null ? spd.msAngkutan.nama : spd.angkutanLain;
                espdEmail.hotel                = spd.penginapan;

                espdEmail.spdStatusList = tamplatesSPD;

                espdEmail.claimApprove = claimApprove;
                espdEmail.alasan       = spd.Alasan;
                string sqlFormattedDate = spd.tglExpired.HasValue
                ? spd.tglExpired.Value.ToString("dd MMMM yyyy")
                : "<not available>";

                espdEmail.tglExpired = sqlFormattedDate;
                espdEmail.uangMuka   = spd.uangMuka;
                espdEmail.BPHUM      = spd.BPHUM;
                try
                {
                    TimeSpan Jumlahhari = spd.tglKembali - spd.tglBerangkat;
                    TimeSpan tambahan   = TimeSpan.FromDays(1);
                    Jumlahhari         += tambahan;
                    espdEmail.totalDays = Jumlahhari.Days.ToString();
                }
                catch (Exception)
                {
                    espdEmail.totalDays = "Undetected";
                }


                if (urltarget.ToLower().Contains("claim"))
                {
                    var dc = ctx.trClaims.FirstOrDefault(o => o.noSPD == spd.noSPD);
                    #region claim
                    var uangmuka = (string.IsNullOrEmpty(spd.uangMuka) ? 0 : int.Parse(spd.uangMuka));
                    espdEmail.CbiayaMakan = dc.biayaMakan.ToString("#,###");
                    espdEmail.CuangSaku   = dc.uangSaku.ToString("#,###");
                    espdEmail.Ctiket      = dc.tiket.ToString("#,###");
                    espdEmail.Chotel      = dc.hotel.ToString("#,###");
                    espdEmail.CBBM        = dc.BBM.ToString("#,###");
                    espdEmail.Ctol        = dc.tol.ToString("#,###");
                    espdEmail.Ctaxi       = dc.taxi.ToString("#,###");
                    espdEmail.CairportTax = dc.airportTax.ToString("#,###");
                    espdEmail.Claundry    = dc.laundry.ToString("#,###");
                    espdEmail.Cparkir     = dc.parkir.ToString("#,###");
                    espdEmail.Ckomunikasi = dc.komunikasi != null?dc.komunikasi.Value.ToString("#,###") : "";

                    espdEmail.CbiayaLainLain = dc.biayaLainLain.ToString("#,###");
                    espdEmail.CtotalClaim    = dc.total.ToString("#,###");
                    espdEmail.CuangMuka      = uangmuka.ToString("#,###");
                    espdEmail.Cpenyelesaian  = (dc.total - uangmuka).ToString("#,###");
                    espdEmail.CtotalClaim    = dc.total.ToString("#,###");
                    espdEmail.CBPHClaim      = dc.BPHClaim;
                    #endregion
                }

                string urlSource =
                    "?nCrypt=" + espdEmail.nCrypt +
                    "&eCrypt=" + espdEmail.eCrypt +
                    "&sCrypt=" + espdEmail.sCrypt +
                    "&ClaimApprove=" + espdEmail.claimApprove +
                    "&index=" + indexLevel +
                    "&Action=";

                string urlAction         = "http://trac39/SPD/" + urltarget + ".ashx" + urlSource;
                string urlActionExternal = "http://118.97.80.12/SPD/" + urltarget + ".ashx" + urlSource;
                espdEmail.DetailURL      = "http://118.97.80.12/SPD/" + "newFormRequestDetail.aspx?encrypt=" + espdEmail.sCrypt;
                espdEmail.DetailClaimURL = "http://118.97.80.12/SPD/" + "newFormRequestDetailClaim.aspx?encrypt=" + espdEmail.sCrypt;

                espdEmail.ApproveUrl         = urlAction + Encrypto.Encrypt("approve");
                espdEmail.RejectUrl          = urlAction + Encrypto.Encrypt("reject");
                espdEmail.ApproveUrlExternal = urlActionExternal + Encrypto.Encrypt("approve");
                espdEmail.RejectUrlExternal  = urlActionExternal + Encrypto.Encrypt("reject");

                //send to requestor and approval
                string body = EmailCore.PrepareMailBodyWith(tamplate, espdEmail);

                //cc
                string ccAddress = "";
                if (toAddress.ToLower() == "*****@*****.**")
                {
                    ccAddress = "[email protected],[email protected],[email protected]";
                }

                if (toAddress.ToLower() == "*****@*****.**")
                {
                    ccAddress = "*****@*****.**";
                }

                if (toAddress.ToLower() == "*****@*****.**")
                {
                    ccAddress = "[email protected],[email protected]";
                }

                if (toAddress.ToLower() == "*****@*****.**")
                {
                    ccAddress = "*****@*****.**";
                }

                //for date 16-Maret-2015 till 20-Maret-2015
                //for date 20-April-2015 till 25-April-2015
                //for date 18-Mei-2015 till 22-Mei-2015
                //for date 19-September-2015 till the end
                // if (toAddress.ToLower() == "*****@*****.**")
                // {
                // //    //toAddress = "*****@*****.**";
                //     toAddress = "*****@*****.**";

                //}

                string bccAddress = "";

                Helper hp = new Helper();

                if (indexLevel.Contains("1"))
                {
                    bccAddress = "[email protected],";
                    DataSet dsCheckBcc = hp.wsEmail("spd");
                    if (dsCheckBcc.Tables[0].Rows.Count > 0)
                    {
                        DataRow  drCheckBcc = dsCheckBcc.Tables[0].Rows[0];
                        DataView dvCheckBcc = new DataView(dsCheckBcc.Tables[0]);
                        for (int i = 0; i < dvCheckBcc.Count; i++)
                        {
                            bccAddress += drCheckBcc.Table.Rows[i][0].ToString();
                            bccAddress += ",";
                        }
                        bccAddress = bccAddress.Remove(bccAddress.Length - 1);
                    }
                }
                else if (statusClaim.Contains("Menunggu approval atasan"))
                {
                    bccAddress = "[email protected],";
                    DataSet dsCheckBcc = hp.wsEmail("claim");
                    if (dsCheckBcc.Tables[0].Rows.Count > 0)
                    {
                        DataRow  drCheckBcc = dsCheckBcc.Tables[0].Rows[0];
                        DataView dvCheckBcc = new DataView(dsCheckBcc.Tables[0]);
                        for (int i = 0; i < dvCheckBcc.Count; i++)
                        {
                            bccAddress += drCheckBcc.Table.Rows[i][0].ToString();
                            bccAddress += ",";
                        }
                        bccAddress = bccAddress.Remove(bccAddress.Length - 1);
                    }
                }
                else
                {
                    bccAddress = "*****@*****.**";
                }
                //for production try TO DO
                //EmailCore.SendMail(toAddress, ccAddress, bccAddress, subject, body);
                //end for production
            }
        }
Exemple #2
0
        public void Execute(IJobExecutionContext context)
        {
            using (var ctx = new dsSPDDataContext())
            {
                // ngga bis diembed ke template jadi manual
                var spd = (from p in ctx.trSPDs
                           where
                           (p.tglBerangkat.Date - DateTime.Now.Date).Days >= 0 &&
                           p.isSubmit == true && p.isCancel == null && p.noSPD NotFinit select p).ToList();

                var nospd = (from p in spd select p.noSPD).Distinct();

                var approval = (from p in ctx.ApprovalStatus
                                where nospd.Contains(p.NoSPD) && p.Status == null
                                group p by p.NoSPD
                                into groups
                                select groups.OrderBy(p => p.IndexLevel).First()).ToList();

                var nrpApproval = (from p in approval
                                   group p by p.NrpApproval
                                   into groups
                                   select groups.OrderBy(p => p.IndexLevel).First().NrpApproval).Distinct().ToList();

                foreach (var item in nrpApproval)
                {
                    var nama = approval.FirstOrDefault(o => o.NrpApproval == item).Nama;

                    var datatoSend = (from p in approval
                                      join o in spd on p.NoSPD equals o.noSPD
                                      where p.NrpApproval == item
                                      select new Expired
                    {
                        NoSPD = o.noSPD,
                        Nama = o.namaLengkap,
                        TglBerangkat = o.tglBerangkat,
                        Keperluan = o.msKeperluan.keperluan + " - " + o.ketKeperluan + " - " + o.keperluanLain
                    }).ToList();

                    if (datatoSend.Count != 0 || datatoSend != null)
                    {
                        using (var smtpClient = new SmtpClient())
                        {
                            string data = string.Empty;

                            string trtd = string.Empty;
                            foreach (var detail in datatoSend.OrderBy(o => o.TglBerangkat.Date))
                            {
                                string urlExternal = "http://118.97.80.12/SPD/" + "newFormRequestDetail.aspx?encrypt=" + Encrypto.Encrypt(detail.NoSPD);
                                string urlInternal = "http://trac39/SPD/" + "newFormRequestDetail.aspx?encrypt=" + Encrypto.Encrypt(detail.NoSPD);
                                trtd +=
                                    "<tr style='border:1px solid #eee;'>" +
                                    "<td style='border:1px solid #dedede;padding:5px;'>" + detail.NoSPD + "</td>" +
                                    "<td style='border:1px solid #dedede;padding:5px;'>" + detail.Nama + "</td>" +
                                    "<td style='border:1px solid #dedede;padding:5px;'>" + detail.Keperluan + "</td>" +
                                    "<td style='border:1px solid #dedede;padding:5px;'>" + detail.TglBerangkat.ToString("dd MMMM yyyy") + " <b>(H-" + (detail.TglBerangkat.Date - DateTime.Now.Date).Days.ToString() + ")</b></td>" +
                                    "<td style='border:1px solid #dedede;padding:5px;'><a href='" + urlInternal + "'>Internal</a>&nbsp;|&nbsp;<a href='" + urlExternal + "'>External</a></td>" +
                                    "</tr>";
                            }

                            data += "<h4 style='color: #1b809e; border-bottom: 1px solid #eee;'>Kepada Yth " + nama + "</h4>" + "<br/>Berikut adalah data Approval yang masih outstanding per tanggal " + DateTime.Now.ToString("dd MMMM yyyy") + "<br/><br/>" +
                                    "<table style='border-color: #eee;border-collapse: collapse;border-width: 1px;color: #333333;'>" +
                                    "<tr style='border-width: 1px;padding: 8px;border-style: solid;border-color: #eee;background-color: #dedede;'>" +
                                    "<th style='border:1px solid #fff;padding:5px;'>No</th>" +
                                    "<th style='border:1px solid #fff;padding:5px;'>Nama</th>" +
                                    "<th style='border:1px solid #fff;padding:5px;'>Keperluan</th>" +
                                    "<th style='border:1px solid #fff;padding:5px;'>Tgl Berangkat</th>" +
                                    "<th style='border:1px solid #fff;padding:5px;'>Link</th>" +
                                    "</tr>" +
                                    trtd +
                                    "</table><br/><br/><br/>" +
                                    "Terima kasih. <br/>" +
                                    "Catatan : Internal (jika berada di kantor) dan External (jika berada di luar kantor)<br/>" +
                                    "<span style='color: #FF0000'><b>E-mail ini dikirim otomatis oleh Sistem Pembuatan SPD.Tidak perlu membalas E-mail ini</b></span>";

                            SmtpSection section = (SmtpSection)ConfigurationManager.GetSection("system.net/mailSettings/smtp");
                            MailMessage message = new MailMessage
                            {
                                Sender     = new MailAddress(section.From), // on Behave of When From differs
                                From       = new MailAddress(section.From),
                                Subject    = "Claim SPD dengan nomor" + nospd + "Expired ",
                                Body       = data,
                                IsBodyHtml = true,
                            };

                            var    getEmail = approval.FirstOrDefault(o => o.NrpApproval == item);
                            string email    = string.Empty;
                            email = getEmail != null ? getEmail.Email : string.Empty;

                            if (!string.IsNullOrEmpty(email))
                            {
                                if (email.ToLower() == "*****@*****.**")
                                {
                                    email = "*****@*****.**";
                                }
                                message.To.Add(email);
                                message.Bcc.Add("*****@*****.**");

                                //message.To.Add("*****@*****.**");
                                //message.To.Add("*****@*****.**");

                                smtpClient.Send(message);
                            }
                        }
                    }
                }
            }
        }
Exemple #3
0
        public void sendToMail(dsSPDDataContext ctx, List <OutstandingClaim> datatoSend, string nama, string nrp)
        {
            using (var smtpClient = new SmtpClient())
            {
                string data = string.Empty;

                string trtd = string.Empty;
                foreach (var detail in datatoSend.OrderBy(o => o.TglBerangkat.Date))
                {
                    string urlExternal = "http://118.97.80.12/SPD/" + "newFormRequestDetailClaim.aspx?encrypt=" + Encrypto.Encrypt(detail.NoSPD);
                    string urlInternal = "http://trac39/SPD/" + "newFormRequestDetailClaim.aspx?encrypt=" + Encrypto.Encrypt(detail.NoSPD);
                    trtd +=
                        "<tr style='border:1px solid #eee;'>" +
                        "<td style='border:1px solid #dedede;padding:5px;'>" + detail.NoSPD + "</td>" +
                        "<td style='border:1px solid #dedede;padding:5px;'>" + detail.Nama + "</td>" +
                        "<td style='border:1px solid #dedede;padding:5px;'>" + detail.Keperluan + "</td>" +
                        "<td style='border:1px solid #dedede;padding:5px;'>" + detail.TglBerangkat.ToString("dd MMMM yyyy") + "</td>" +
                        "<td style='border:1px solid #dedede;padding:5px;'>" + detail.TglKembali.ToString("dd MMMM yyyy") + "</td>" +
                        "<td style='border:1px solid #dedede;padding:5px;'>" + detail.JumlahClaim + "</td>" +
                        "<td style='border:1px solid #dedede;padding:5px;'><a href='" + urlInternal + "'>Internal</a>&nbsp;|&nbsp;<a href='" + urlExternal + "'>External</a></td>" +
                        "</tr>";
                }

                data += "<h4 style='color: #1b809e; border-bottom: 1px solid #eee;'>Kepada Yth " + nama + "</h4>" + "<br/>Berikut adalah data Approval Claim yang masih outstanding per tanggal " + DateTime.Now.ToString("dd MMMM yyyy") + "<br/><br/>" +
                        "<table style='border-color: #eee;border-collapse: collapse;border-width: 1px;color: #333333;'>" +
                        "<tr style='border-width: 1px;padding: 8px;border-style: solid;border-color: #eee;background-color: #dedede;'>" +
                        "<th style='border:1px solid #fff;padding:5px;'>No</th>" +
                        "<th style='border:1px solid #fff;padding:5px;'>Nama</th>" +
                        "<th style='border:1px solid #fff;padding:5px;'>Keperluan</th>" +
                        "<th style='border:1px solid #fff;padding:5px;'>Tgl Berangkat</th>" +
                        "<th style='border:1px solid #fff;padding:5px;'>Tgl Kembali</th>" +
                        "<th style='border:1px solid #fff;padding:5px;'>Total Claim</th>" +
                        "<th style='border:1px solid #fff;padding:5px;'>Link</th>" +
                        "</tr>" +
                        trtd +
                        "</table><br/><br/><br/>" +
                        "Terima kasih. <br/>" +
                        "Catatan : Internal (jika berada di kantor) dan External (jika berada di luar kantor)<br/>" +
                        "<span style='color: #FF0000'><b>E-mail ini dikirim otomatis oleh Sistem Pembuatan SPD.Tidak perlu membalas E-mail ini</b></span>";

                SmtpSection section = (SmtpSection)ConfigurationManager.GetSection("system.net/mailSettings/smtp");
                MailMessage message = new MailMessage
                {
                    Sender     = new MailAddress(section.From), // on Behave of When From differs
                    From       = new MailAddress(section.From),
                    Subject    = "Outstanding Approval Claim SPD " + DateTime.Now.Date.ToString("dd MMMM yyyy"),
                    Body       = data,
                    IsBodyHtml = true,
                };

                var    getEmail = ctx.msKaryawans.FirstOrDefault(o => o.nrp == nrp);
                string email    = string.Empty;
                email = getEmail != null ? getEmail.EMail : string.Empty;

                if (!string.IsNullOrEmpty(email))
                {
                    if (email.ToLower() == "*****@*****.**")
                    {
                        message.CC.Add("*****@*****.**");
                        // email = "*****@*****.**";
                    }
                    message.To.Add(email);
                    message.Bcc.Add("*****@*****.**");

                    smtpClient.Send(message);
                }
            }
        }