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 } }
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> | <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); } } } } } }
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> | <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); } } }