protected void btnSubmit_Click(object sender, EventArgs e)
        {
            using (var ctx = new dsSPDDataContext())
            {
                var spd           = ctx.trSPDs.FirstOrDefault(o => o.noSPD == Id.Value);
                var firstApproval = ctx.ApprovalStatus.FirstOrDefault(o => o.NoSPD == Id.Value && o.IndexLevel.Value == 1);

                if (spd == null)
                {
                    errorMessageHidden.Add("SPD tidak ditemukan");
                }

                if (firstApproval == null)
                {
                    errorMessageHidden.Add("Approval pertama tidak ditemukan");
                }

                if (errorMessageHidden.Count() == 0)
                {
                    spd.diubahOleh    = karyawan.nrp;
                    spd.diubahTanggal = DateTime.Now;
                    spd.isSubmitDate  = DateTime.Now;
                    spd.nrpAtasan     = firstApproval.NrpApproval;
                    spd.status        = "Menunggu approval " + firstApproval.ApprovalRule.Deskripsi;
                    spd.isSubmit      = true;

                    try
                    {
                        ctx.SubmitChanges();
                    }
                    catch (Exception ex)
                    {
                        errorMessageHidden.Add("Error Submit SPD, gangguan teknis");
                        errorMessageHidden.Add(ex.Message);
                    }
                    finally
                    {
                        pnlSuccess.Visible = true;
                        pnlError.Visible   = false;
                        lblSuccess.Text    = "SPD Berhasil di Submit, No SPD : " + spd.noSPD + ", status spd saat ini adalah " + spd.status;
                        btnSubmit.Enabled  = false;

                        // send approval atasan
                        EmailCore.ApprovalSPD(firstApproval.NrpApproval, Id.Value, firstApproval.IndexLevel.Value.ToString(), spd);
                    }
                }

                if (errorMessageHidden.Count() > 0)
                {
                    errorMessage.DataSource = errorMessageHidden;
                    errorMessage.DataBind();

                    pnlError.Visible   = true;
                    pnlSuccess.Visible = false;
                }
            }
        }
Beispiel #2
0
        public void SendPlaintextEmail()
        {
            string address = "*****@*****.**";
            var    email   = Plaintext();

            email.Sender    = address;
            email.Recipient = address;
            var core = new EmailCore();

            core.Send(email);
        }
Beispiel #3
0
        public ActionResult Index(string mensaje, string email_destino)
        {
            try
            {
                EmailCore objEmail = new EmailCore();
                objEmail.EnviaEmail("Prueba de email", mensaje, email_destino);
            }
            catch (Exception ex)
            {
            }

            return(View());
        }
Beispiel #4
0
        public void SendBinaryEmailStorage()
        {
            string address = "*****@*****.**";
            var    email   = Binary();

            email.Sender    = address;
            email.Recipient = address;
            var core = new EmailCore();
            var id   = core.Send(email);

            var table = new AzureTable <BinaryEmailData>(CloudStorageAccount.DevelopmentStorageAccount);
            var data  = table.QueryBy(email.Token.ApplicationId.ToString(), id.ToString());

            Assert.AreEqual <Guid>(email.Token.ApplicationId, data.ApplicationId);
            Assert.AreEqual <string>(email.Sender, data.Sender);
            Assert.AreEqual <string>(email.Recipient, data.Recipient);
            Assert.IsTrue(email.RawMessage.ContentEquals(data.RawMessage));
        }
Beispiel #5
0
        public void SendPlaintextEmailStorage()
        {
            string address = "*****@*****.**";
            var    email   = Plaintext();

            email.Sender    = address;
            email.Recipient = address;
            var core = new EmailCore();
            var id   = core.Send(email);

            var table = new AzureTable <PlaintextEmailData>(CloudStorageAccount.DevelopmentStorageAccount);
            var data  = table.QueryBy(email.Token.ApplicationId.ToString(), id.ToString());

            Assert.AreEqual <Guid>(email.Token.ApplicationId, data.ApplicationId);
            Assert.AreEqual <string>(email.Sender, data.Sender);
            Assert.AreEqual <string>(email.Recipient, data.Recipient);
            Assert.AreEqual <string>(email.Subject, data.Subject);
            Assert.AreEqual <string>(email.Message, data.Message);
        }
Beispiel #6
0
        public ActionResult SendNewsLetter(string title = null, string all = null, HttpPostedFileBase file = null)
        {
            var userId = User.Identifier();
            var body   = string.Empty;

            using (var reader = new StreamReader(file.InputStream))
            {
                body = reader.ReadToEnd();
            }

            if (!string.IsNullOrWhiteSpace(title) && !string.IsNullOrWhiteSpace(body))
            {
                var toAll     = all == "on";
                var emailCore = new EmailCore();
                IEnumerable <Profile> profiles = null;
                if (toAll)
                {
                    profiles = this.profileCore.Search <Profile>(null, null, null, true, short.MaxValue);
                }
                else
                {
                    profiles = new List <Profile>(1);
                    var profile = new Profile()
                    {
                        Identifier = userId
                    };
                    ((IList <Profile>)profiles).Add(profile);
                }

                if (null != profiles)
                {
                    var loaded = new List <Profile>();
                    foreach (var profile in profiles)
                    {
                        loaded.Add(this.profileCore.SearchSingle <Profile>(profile.Identifier, null, userId, true));
                    }

                    emailCore.NewsLetter(loaded, title, body);
                }
            }

            return(this.RedirectToAction("Newsletter"));
        }
Beispiel #7
0
        private void CancelSPD(trSPD dataSpd, string nrp, string nospd)
        {
            using (var ctx = new dsSPDDataContext())
            {
                dataSpd               = ctx.trSPDs.FirstOrDefault(o => o.noSPD == nospd);
                dataSpd.status        = "SPD Cancel";
                dataSpd.isCancel      = true;
                dataSpd.diubahOleh    = nrp;
                dataSpd.diubahTanggal = DateTime.Now;
                dataSpd.isCancelDate  = DateTime.Now;

                // get data claim
                var dataClaim = ctx.trClaims.FirstOrDefault(o => o.noSPD == nospd);
                if (dataClaim != null)
                {
                    dataClaim.status        = "SPD Cancel";
                    dataClaim.isCancel      = true;
                    dataClaim.diubahOleh    = nrp;
                    dataClaim.diubahTanggal = DateTime.Now;
                    dataClaim.isCancelDate  = DateTime.Now;
                }

                ctx.SubmitChanges();

                // get all approval
                var approval = ctx.ApprovalStatus.Where(o => o.NoSPD == nospd).ToList();

                //get all people has been approve
                var approvalHasApproved = approval.Where(o => o.Status != null).Distinct().ToList();

                //send email to all people has been approved
                foreach (var item in approvalHasApproved)
                {
                    EmailCore.InformasiCancelSPD(item.NrpApproval, dataSpd.noSPD, dataSpd);
                }
            }
        }
Beispiel #8
0
        public void SendPlainNull()
        {
            var core = new EmailCore();

            core.Send((PlaintextEmail)null);
        }
Beispiel #9
0
        public void SendBinaryNull()
        {
            var core = new EmailCore();

            core.Send((BinaryEmail)null);
        }
Beispiel #10
0
        public string AsignarContacto(int ContactoID, int DesarrolloId = 0)
        {
            try
            {
                // Busca

                carrusel_asignacion Carrusel_asignacion = new carrusel_asignacion();

                string   Constr  = WebConfigurationManager.ConnectionStrings["ConStr"].ToString();
                ADO_Core objAdo  = new ADO_Core(Constr);
                string   sqlStat = String.Format("Exec sp_carruselAsignacion {0}, {1}", DesarrolloId, 1);

                SqlDataReader dr        = objAdo.GetDataReader(sqlStat);
                bool          encuentra = false;

                if (dr.HasRows)
                {
                    dr.Read();
                    Boolean.TryParse(dr["encuentra"].ToString(), out encuentra);

                    if (encuentra)
                    {
                        string epId = dr["EPId"].ToString();
                        Carrusel_asignacion.encuentra  = encuentra;
                        Carrusel_asignacion.EPId       = Int32.Parse(!String.IsNullOrEmpty(epId) && !String.IsNullOrWhiteSpace(epId) ? epId : "0");
                        Carrusel_asignacion.Nombre     = dr["Nombre"].ToString();
                        Carrusel_asignacion.Email      = dr["Email"].ToString();
                        Carrusel_asignacion.PartyId    = long.Parse(dr["PartyId"].ToString());
                        Carrusel_asignacion.ResourceId = long.Parse(dr["ResourceId"].ToString());
                    }
                }

                if (encuentra)
                {
                    string Usuario_ID = Session["Usuario_ID"].ToString();

                    // guarda registro en la tabla Asignacion
                    Asignacion asignacion = new Asignacion();

                    asignacion.ContactoId      = ContactoID;
                    asignacion.EPId            = Carrusel_asignacion.EPId;
                    asignacion.UsuarioHOST     = Usuario_ID;
                    asignacion.FechaAsignacion = DateTime.Now;

                    db.Asignacion.Add(asignacion);
                    db.SaveChanges();


                    //// invoca el web service
                    //DatosReales datosReales = new DatosReales();
                    //var resultdr = db.DatosReales.FirstOrDefault(w => w.ContactoId == ContactoID);

                    //string campo1 = "@XZYContaToSales#";
                    //string Nombre = resultdr.Nombre;
                    //string ApellidoPaterno = resultdr.ApellidoPaterno;
                    //string ApellidoMaterno = resultdr.ApellidoMaterno;
                    //string CanalCaptacion = "1";
                    //string SubcanalCaptacion = "";
                    //string TelefonoMovil = resultdr.Telefono;
                    //string CorreoElectonico = resultdr.Correo;
                    //string Desarrollo = "";
                    //long OwnerPartyId = Carrusel_asignacion.PartyId;
                    //long ResourceId = Carrusel_asignacion.ResourceId;

                    //// obtien datos del contacto
                    //var DatosContacto = db.View_Datos_Contacto.FirstOrDefault(w => w.ContactoId == ContactoID);

                    //CanalCaptacion = DatosContacto.CanalNombre;
                    //SubcanalCaptacion = DatosContacto.SubCanalNombre;
                    //Desarrollo = DatosContacto.DesarrolloNombre;

                    // // Consume el web service
                    // hu_web_service.SoaClient isoac = new hu_web_service.SoaClient();
                    //var result_ws = isoac.crearContactoRespondersV2(campo1, Nombre, ApellidoPaterno, ApellidoMaterno, CanalCaptacion, SubcanalCaptacion, TelefonoMovil, CorreoElectonico, Desarrollo, OwnerPartyId, ResourceId); ;


                    var Desarrollo    = db.Desarrollo.Where(w => w.DesarrolloId == DesarrolloId).FirstOrDefault();
                    var datosContacto = db.DatosReales.Where(w => w.ContactoId == ContactoID).FirstOrDefault();

                    // ejecuta el web service
                    hu_website.hu_web_service.SoaClient webSer = new hu_web_service.SoaClient();
                    string SalesOracleId = webSer.crearContactoRespondersV2("@XZYContaToSales#", datosContacto.Nombre, datosContacto.ApellidoPaterno, datosContacto.ApellidoMaterno, "DIGIN", "IBWA", datosContacto.Telefono, datosContacto.Correo, Desarrollo.DesarrolloNombre, Carrusel_asignacion.PartyId, Carrusel_asignacion.ResourceId);


                    if (SalesOracleId.Contains("Error al crear contacto"))
                    {
                        // guarda notificacion para el EP en la tabla
                        AgregaMensageParaEP(SalesOracleId);
                        return("Bad");
                    }
                    else
                    {
                        // graba el valor recivido del ws en la tabla contacto
                        var contactows = db.Contactos.Where(w => w.ContactoId == ContactoID).FirstOrDefault();
                        contactows.SalesOracleId = long.Parse(SalesOracleId);
                        db.SaveChanges();

                        // cambia el estatus del contacto a 6
                        var ontactoRes = db.Contactos.Where(w => w.ContactoId == ContactoID).FirstOrDefault();
                        ontactoRes.EstatusBIDA = 6;
                        db.SaveChanges();

                        // envia email al contacto y alEP
                        EmailCore emailCore = new EmailCore();
                        emailCore.EnviaEmail("Prueba Responders2", "<p>Estimad(@) NombreCompletoContacto, en breve su Ejecutivo Patrimonial NombreEP se pondrá en contacto con usted. <br /></p> <p>Attentamente</p> <p>Hogares Unión</p> <p>correoEP</p>", datosContacto.Correo);

                        // avisa notificacion al contacto
                        bool notifica = notificaconContacto_Genrente(ContactoID, "Se asigno un proyecto");
                    }
                }
                else if (!encuentra)
                {
                    bool notifica = notificaconContacto_Genrente(ContactoID, "No se pudo asignar el proyecto");
                }



                return("Ok");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return("Bad");
            }
        }
Beispiel #11
0
        public string ChangeStatus(string nospd, string action, string nrp, string claimapprove)
        {
            using (var ctx = new dsSPDDataContext())
            {
                try
                {
                    // get data spd & claim
                    var dataClaim = ctx.trClaims.FirstOrDefault(o => o.noSPD == nospd);
                    var dataSpd   = ctx.trSPDs.FirstOrDefault(o => o.noSPD == nospd);

                    if (dataClaim != null && dataSpd != null)
                    {
                        // get user creator nrp

                        // approve
                        if (action.ToLower().Contains("approve"))
                        {
                            if (dataClaim.status.ToLower().Contains("expired"))
                            {
                                return("Claim Expired, sehingga tidak bisa di Approved.");
                            }

                            switch (claimapprove.ToLower())
                            {
                            case "atasan":
                                // jika sudah pernah diapproved/reject return reject alert
                                if (dataClaim.isApprovedAtasan != null)
                                {
                                    string stringStatus = dataClaim.isApprovedAtasan.Value == true ? "approve" : "reject";
                                    if (dataClaim.isApprovedAtasanDate == null)
                                    {
                                        dataClaim.isApprovedAtasanDate = DateTime.Now;
                                    }
                                    return("approval claim tidak bisa dieksekusi, karena claim No Spd : " + nospd + "  telah " + stringStatus + " pada : " + dataClaim.isApprovedAtasanDate.Value.ToString("dd MMMM yyyy HH:mm"));
                                }
                                // jika sudah di cancel return cancel alert
                                if (dataClaim.isCancel == true)
                                {
                                    if (dataClaim.isCancelDate == null)
                                    {
                                        dataClaim.isCancelDate = DateTime.Now;
                                    }
                                    return("approval claim tidak bisa dieksekusi, karena claim No Spd : " + nospd + "  telah dicancel pada : " + dataClaim.isCancelDate.Value.ToString("dd MMMM yyyy HH:mm"));
                                }

                                dataClaim.isApprovedAtasan     = true;
                                dataClaim.isApprovedAtasanDate = DateTime.Now;
                                dataClaim.ApprovedAtasanBy     = nrp;
                                dataClaim.status = "Menunggu approval GA";

                                //    var role = (from p in ctx.msUsers
                                //        where p.roleId == 17
                                //   select p.nrp).ToList();

                                //   var dataGa = ctx.msKaryawans
                                //     .Where(o =>
                                //       o.coCd == "0001" &&
                                //      role.Contains(o.nrp));
                                // foreach (var item in dataGa)
                                // {
                                //     EmailCore.ApprovalClaim(item.nrp, dataClaim.noSPD, dataSpd, "ga", dataClaim.status);
                                // }

                                Helper  hp         = new Helper();
                                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 += ",";
                                        string nrpGA = drCheckBcc.Table.Rows[i][1].ToString();

                                        EmailCore.ApprovalClaim(nrpGA, dataClaim.noSPD, dataSpd, "ga", dataClaim.status);
                                    }
                                }



                                EmailCore.InformasiClaim(dataSpd.dibuatOleh, dataClaim.noSPD, dataSpd, dataClaim.status);

                                break;

                            case "ga":
                                // jika sudah pernah diapproved/reject return reject alert
                                if (dataClaim.isApprovedGA != null)
                                {
                                    string stringStatus = dataClaim.isApprovedGA.Value == true ? "approve" : "reject";
                                    if (dataClaim.isApprovedGADate == null)
                                    {
                                        dataClaim.isApprovedGADate = DateTime.Now;
                                    }
                                    return("approval claim tidak bisa dieksekusi, karena claim No Spd : " + nospd + "  telah " + stringStatus + " pada : " + dataClaim.isApprovedGADate.Value.ToString("dd MMMM yyyy HH:mm"));
                                }
                                // jika sudah di cancel return cancel alert
                                if (dataClaim.isCancel == true)
                                {
                                    if (dataClaim.isCancelDate == null)
                                    {
                                        dataClaim.isCancelDate = DateTime.Now;
                                    }
                                    return("approval claim tidak bisa dieksekusi, karena claim No Spd : " + nospd + "  telah dicancel pada : " + dataClaim.isCancelDate.Value.ToString("dd MMMM yyyy HH:mm"));
                                }

                                var creator = ctx.msKaryawans.FirstOrDefault(o => o.nrp == dataSpd.nrp);

                                var role2 = (from p in ctx.msUsers
                                             where p.roleId == 19
                                             select p.nrp).ToList();

                                var datafinace = ctx.msKaryawans
                                                 .Where(o =>
                                                        o.coCd == creator.coCd &&
                                                        role2.Contains(o.nrp));

                                foreach (var item in datafinace)
                                {
                                    //EmailCore.ApprovalClaim(item.nrp, dataClaim.noSPD, dataSpd, "finance", dataClaim.status);
                                }

                                // Tambahan Aldo Generate txt
                                var dc    = new dsSPDDataContext();
                                var query = (from a in dc.trClaims
                                             join b in dc.trSPDs on a.noSPD equals b.noSPD
                                             where a.noSPD == nospd
                                             select new
                                {
                                    NoSpd = a.noSPD,
                                    Status = "S",
                                    approvaltgl = DateTime.Now.Date,
                                    NRP = b.nrp,
                                    NamaLengkap = b.namaLengkap,
                                    CostCenter = b.costCenter,
                                    UangMakan = a.biayaMakan,
                                    UangSaku = a.uangSaku,
                                    Tiket = a.tiket,
                                    Hotel = a.hotel,
                                    Laundry = a.laundry,
                                    Komunikasi = a.komunikasi,
                                    AirPortTax = a.airportTax,
                                    BBM = a.BBM,
                                    Tol = a.tol,
                                    Taxi = a.taxi,
                                    Parkir = a.parkir,
                                    Biayalainlain = a.biayaLainLain,
                                    UangMuka = b.uangMuka,
                                    TglBerangkat = b.tglBerangkat,
                                    TglKembali = b.tglKembali
                                }).FirstOrDefault();

                                string approvalDay   = DateTime.Now.Day.ToString();
                                string approvalMonth = DateTime.Now.Month.ToString();
                                string approvalYear  = DateTime.Now.Year.ToString();
                                string _approvaltgl  = approvalDay + "." + approvalMonth + "." + approvalYear;

                                string _CostCenter = string.Empty;
                                string message     = "";
                                message += query.NoSpd + "|";
                                message += query.Status + "|";
                                message += _approvaltgl.Trim() + "|";
                                message += query.NRP + "|";
                                message += query.NamaLengkap + "|";

                                if (query.CostCenter.Split('-').Count() > 0)
                                {
                                    _CostCenter = query.CostCenter.Split('-')[0];
                                }
                                else
                                {
                                    _CostCenter = query.CostCenter;
                                }

                                message += _CostCenter + "|";
                                message += query.UangMakan + "|";
                                message += query.UangSaku + "|";
                                message += query.Tiket + "|";
                                message += query.Hotel + "|";
                                message += query.Laundry + "|";
                                message += query.Komunikasi + "|";
                                message += query.AirPortTax + "|";
                                message += query.BBM + "|";
                                message += query.Tol + "|";
                                message += query.Taxi + "|";
                                message += query.Parkir + "|";
                                message += query.Biayalainlain + "|";
                                message += query.UangMuka + "|";
                                //message += query.TglBerangkat.Day + "." + query.TglBerangkat.Month + "." + query.TglBerangkat.Year + "|";
                                //message += query.TglKembali.Day + "." + query.TglKembali.Month + "." + query.TglKembali.Year;

                                message += query.TglBerangkat.Day + "." + query.TglBerangkat.Month + "." + query.TglBerangkat.Year + "|"; //update 12 oktober 2018
                                message += query.TglKembali.Day + "." + query.TglKembali.Month + "." + query.TglKembali.Year;             //update 12 oktober 2018

                                string tahun   = DateTime.Now.Year.ToString();
                                string bulan   = DateTime.Now.Month.ToString();
                                string tanggal = DateTime.Now.Day.ToString();
                                string jam     = DateTime.Now.Hour.ToString();
                                string menit   = DateTime.Now.Minute.ToString();
                                string detik   = DateTime.Now.Second.ToString();
                                string milisec = DateTime.Now.Millisecond.ToString();

                                string datetime = tahun + bulan + tanggal + "-" + jam + menit + detik + "-" + milisec;
                                string filename = "Settlement_" + datetime + ".txt";

                                //string _User = Encrypto.Decrypt(ConfigurationManager.AppSettings["Username"]);
                                //string _Pass = Encrypto.Decrypt(ConfigurationManager.AppSettings["Password"]);
                                //string _Domain = Encrypto.Decrypt(ConfigurationManager.AppSettings["Domain"]);

                                string _User   = ConfigurationManager.AppSettings["Username"];
                                string _Pass   = ConfigurationManager.AppSettings["Password"];
                                string _Domain = ConfigurationManager.AppSettings["Domain"];

                                string _PathSource       = ConfigurationManager.AppSettings["GenerateText"];
                                string _PathGenerateResp = ConfigurationManager.AppSettings["PathGenerateResp"];
                                string _BackupSett       = ConfigurationManager.AppSettings["BackupSett"];

                                string filePath = string.Format("{0}\\{1}", _PathSource, filename);
                                using (StreamWriter writer = new StreamWriter(filePath, true))
                                {
                                    writer.WriteLine(message);
                                    writer.Close();
                                }

                                string backUpFile      = _BackupSett + filename;
                                string sourceFile      = _PathSource + filename;
                                string destinationFile = _PathGenerateResp + filename;
                                bool   ExistsFile      = false;

                                using (new Impersonator(_User, _Domain, _Pass))
                                {
                                    File.Copy(sourceFile, destinationFile);
                                    if (File.Exists(destinationFile))
                                    {
                                        ExistsFile = true;
                                    }
                                }

                                if (ExistsFile == true)
                                {
                                    File.Move(sourceFile, backUpFile);
                                    ExistsFile = false;
                                }

                                using (new Impersonator(_User, _Domain, _Pass))
                                {
                                    string _PathSapResp                   = ConfigurationManager.AppSettings["PathSapResp"];
                                    string _PathArchiveSapResp            = ConfigurationManager.AppSettings["PathArchiveSapResp"];
                                    List <ListGenerateTextModel> textList = new List <ListGenerateTextModel>();

                                    bool isFileFound = false;
                                    for (int i = 0; i <= 4; i++)
                                    {
                                        foreach (string file in Directory.EnumerateFiles(_PathSapResp, "*.txt"))
                                        {
                                            string        contents     = File.ReadAllText(file);
                                            List <string> cols         = contents.Split(new char[] { '|' }).ToList();
                                            List <string> fileNameList = file.Split(new char[] { '\\' }).ToList();
                                            List <string> textName     = fileNameList.LastOrDefault().Split(new char[] { '_' }).ToList();

                                            string tgl = textName.LastOrDefault().Remove(textName.LastOrDefault().Length - 4, 4);

                                            var           fileDate       = DateTime.ParseExact(tgl, "yyyyMMdd-HHmmss-fff", CultureInfo.InvariantCulture);
                                            string        noSPD          = cols[0];
                                            string        type           = cols[1];
                                            string        messageBPH     = cols.LastOrDefault();
                                            List <string> errorBPHClaims = messageBPH.Split(new char[] { ' ' }).ToList();

                                            string bphNo = errorBPHClaims[4].ToString();

                                            textList.Add(new ListGenerateTextModel()
                                            {
                                                NoSPD = noSPD, NamaFile = Path.GetFileName(file), Type = type, Tanggal = fileDate, Message = messageBPH, BPH = bphNo, FilePath = file
                                            });
                                        }

                                        var data = textList
                                                   .Where(m => m.NoSPD.Contains(dataClaim.noSPD))
                                                   .Where(m => m.Type.Contains("S"))
                                                   .OrderByDescending(m => m.Tanggal)
                                                   .Select(m => new
                                        {
                                            m.NamaFile,
                                            m.FilePath,
                                            m.Message,
                                            m.BPH,
                                            m.Tanggal
                                        }).ToList();

                                        if (data.Count > 0)
                                        {
                                            isFileFound = true;
                                            string archiveSapRespFile;

                                            if (!data[0].Message.ToLower().Contains("successfully"))
                                            {
                                                dataClaim.errorBPHClaim = data[0].Message;
                                                ctx.SubmitChanges();

                                                foreach (var fileMoveFailed in data)
                                                {
                                                    archiveSapRespFile = _PathArchiveSapResp + fileMoveFailed.NamaFile;

                                                    File.Move(fileMoveFailed.FilePath, archiveSapRespFile);
                                                }

                                                return("Claim " + nospd + " gagal di " + action + " karena " + data[0].Message);
                                            }

                                            dataClaim.isApprovedGA     = true;
                                            dataClaim.isApprovedGADate = DateTime.Now;
                                            dataClaim.ApprovedGABy     = nrp;
                                            dataClaim.status           = "Menunggu approval Finance";

                                            dataClaim.errorBPHClaim = data[0].Message;
                                            dataClaim.BPHClaim      = data[0].BPH;

                                            foreach (var fileMoveSuccess in data)
                                            {
                                                archiveSapRespFile = _PathArchiveSapResp + fileMoveSuccess.NamaFile;

                                                File.Move(fileMoveSuccess.FilePath, archiveSapRespFile);
                                            }

                                            break;
                                        }

                                        if (isFileFound)
                                        {
                                            break;
                                        }

                                        Thread.Sleep(5000);
                                    }

                                    if (!isFileFound)
                                    {
                                        return("Claim " + nospd + " gagal di " + action + " karena file SAP tidak ditemukan, silahkan mencoba kembali.");
                                    }
                                }

                                EmailCore.InformasiClaim(dataSpd.dibuatOleh, dataClaim.noSPD, dataSpd, dataClaim.status);

                                break;

                            case "finance":
                                // jika sudah pernah diapproved/reject return reject alert
                                if (dataClaim.isApprovedFinance != null)
                                {
                                    string stringStatus = dataClaim.isApprovedFinance.Value == true ? "approve" : "reject";
                                    if (dataClaim.isApprovedFinanceDate == null)
                                    {
                                        dataClaim.isApprovedFinanceDate = DateTime.Now;
                                    }
                                    return("approval claim tidak bisa dieksekusi, karena claim No Spd : " + nospd + "  telah " + stringStatus + " pada : " + dataClaim.isApprovedFinanceDate.Value.ToString("dd MMMM yyyy HH:mm"));
                                }
                                // jika sudah di cancel return cancel alert
                                if (dataClaim.isCancel == true)
                                {
                                    if (dataClaim.isCancelDate == null)
                                    {
                                        dataClaim.isCancelDate = DateTime.Now;
                                    }
                                    return("approval claim tidak bisa dieksekusi, karena claim No Spd : " + nospd + "  telah dicancel pada : " + dataClaim.isCancelDate.Value.ToString("dd MMMM yyyy HH:mm"));
                                }

                                dataClaim.isApprovedFinance     = true;
                                dataClaim.isApprovedFinanceDate = DateTime.Now;
                                dataClaim.ApprovedFinanceBy     = nrp;
                                dataClaim.status = "Finance Approved";

                                EmailCore.InformasiClaim(dataSpd.dibuatOleh, dataClaim.noSPD, dataSpd, dataClaim.status);

                                break;

                            default:
                                break;
                            }
                        }
                        else if (action.ToLower().Contains("reject")) //reject
                        {
                            switch (claimapprove.ToLower())
                            {
                            case "atasan":
                                // jika sudah pernah diapproved/reject return reject alert
                                if (dataClaim.isApprovedAtasan != null)
                                {
                                    string stringStatus = dataClaim.isApprovedAtasan.Value == true ? "approve" : "reject";
                                    if (dataClaim.isApprovedAtasanDate == null)
                                    {
                                        dataClaim.isApprovedAtasanDate = DateTime.Now;
                                    }
                                    return("approval claim tidak bisa dieksekusi, karena claim No Spd : " + nospd + "  telah " + stringStatus + " pada : " + dataClaim.isApprovedAtasanDate.Value.ToString("dd MMMM yyyy HH:mm"));
                                }
                                // jika sudah di cancel return cancel alert
                                if (dataClaim.isCancel == true)
                                {
                                    if (dataClaim.isCancelDate == null)
                                    {
                                        dataClaim.isCancelDate = DateTime.Now;
                                    }
                                    return("approval claim tidak bisa dieksekusi, karena claim No Spd : " + nospd + "  telah dicancel pada : " + dataClaim.isCancelDate.Value.ToString("dd MMMM yyyy HH:mm"));
                                }
                                dataClaim.ApprovedAtasanBy     = nrp;
                                dataClaim.isApprovedAtasan     = false;
                                dataClaim.isApprovedAtasanDate = DateTime.Now;

                                break;

                            case "ga":
                                // jika sudah pernah diapproved/reject return reject alert
                                if (dataClaim.isApprovedGA != null)
                                {
                                    string stringStatus = dataClaim.isApprovedGA.Value == true ? "approve" : "reject";
                                    if (dataClaim.isApprovedGADate == null)
                                    {
                                        dataClaim.isApprovedGADate = DateTime.Now;
                                    }
                                    return("approval claim tidak bisa dieksekusi, karena claim No Spd : " + nospd + "  telah " + stringStatus + " pada : " + dataClaim.isApprovedGADate.Value.ToString("dd MMMM yyyy HH:mm"));
                                }
                                // jika sudah di cancel return cancel alert
                                if (dataClaim.isCancel == true)
                                {
                                    if (dataClaim.isCancelDate == null)
                                    {
                                        dataClaim.isCancelDate = DateTime.Now;
                                    }
                                    return("approval claim tidak bisa dieksekusi, karena claim No Spd : " + nospd + "  telah dicancel pada : " + dataClaim.isCancelDate.Value.ToString("dd MMMM yyyy HH:mm"));
                                }
                                dataClaim.ApprovedGABy     = nrp;
                                dataClaim.isApprovedGA     = false;
                                dataClaim.isApprovedGADate = DateTime.Now;

                                break;

                            case "finance":
                                // jika sudah pernah diapproved/reject return reject alert
                                if (dataClaim.isApprovedFinance != null)
                                {
                                    string stringStatus = dataClaim.isApprovedFinance.Value == true ? "approve" : "reject";
                                    if (dataClaim.isApprovedFinanceDate == null)
                                    {
                                        dataClaim.isApprovedFinanceDate = DateTime.Now;
                                    }
                                    return("approval claim tidak bisa dieksekusi, karena claim No Spd : " + nospd + "  telah " + stringStatus + " pada : " + dataClaim.isApprovedFinanceDate.Value.ToString("dd MMMM yyyy HH:mm"));
                                }
                                // jika sudah di cancel return cancel alert
                                if (dataClaim.isCancel == true)
                                {
                                    if (dataClaim.isCancelDate == null)
                                    {
                                        dataClaim.isCancelDate = DateTime.Now;
                                    }
                                    return("approval claim tidak bisa dieksekusi, karena claim No Spd : " + nospd + "  telah dicancel pada : " + dataClaim.isCancelDate.Value.ToString("dd MMMM yyyy HH:mm"));
                                }
                                dataClaim.ApprovedFinanceBy     = nrp;
                                dataClaim.isApprovedFinance     = false;
                                dataClaim.isApprovedFinanceDate = DateTime.Now;

                                break;

                            default:
                                break;
                            }

                            dataClaim.status = "Rejected by " + claimapprove;

                            EmailCore.InformasiClaim(dataSpd.dibuatOleh, dataClaim.noSPD, dataSpd, dataClaim.status);
                        }
                        else if (action.ToLower().Contains("cancel")) //cancel
                        {
                            switch (claimapprove.ToLower())
                            {
                            case "ga":
                                // jika sudah di cancel return cancel alert
                                if (dataClaim.isCancel == true)
                                {
                                    if (dataClaim.isCancelDate == null)
                                    {
                                        dataClaim.isCancelDate = DateTime.Now;
                                    }
                                    return("approval claim tidak bisa dieksekusi, karena claim No Spd : " + nospd + "  telah dicancel pada : " + dataClaim.isCancelDate.Value.ToString("dd MMMM yyyy HH:mm"));
                                }
                                dataClaim.isCancel     = true;
                                dataClaim.isCancelDate = DateTime.Now;
                                dataClaim.status       = "Cancel by " + claimapprove;

                                EmailCore.InformasiClaim(dataSpd.dibuatOleh, dataClaim.noSPD, dataSpd, dataClaim.status);
                                break;

                            default:
                                break;
                            }
                        }
                        else if (action.ToLower().Contains("complete"))
                        {
                            switch (claimapprove.ToLower())
                            {
                            case "ga":
                                dataClaim.TidakExpired = true;
                                ctx.SubmitChanges();
                                return(nospd + " Expired berhasil diperpanjang");

                            default:
                                break;
                            }
                        }

                        ctx.SubmitChanges();
                        return("Claim " + nospd + " berhasil di " + action + " status saat ini berubah menjadi " + dataClaim.status);
                    }
                    else
                    {
                        setErrorLog("Data claim atau spd tidak ditemukan", nospd);
                        return("Claim " + nospd + " gagal di" + action + ", data tidak ditemukan");
                    }
                }
                catch (Exception e)
                {
                    setErrorLog(e, nospd);

                    return(nospd + " _ " + e.Message);
                }
            }
        }
Beispiel #12
0
        private string RejectSPD(trSPD dataSpd, string nrp, string nospd, string index)
        {
            using (var ctx = new dsSPDDataContext())
            {
                dataSpd = ctx.trSPDs.FirstOrDefault(o => o.noSPD == nospd);
                string returner = string.Empty;
                // get all approval
                var approval = ctx.ApprovalStatus.Where(o => o.NoSPD == nospd).ToList();

                // get current approval
                int?indexInt = null;
                if (!string.IsNullOrEmpty(index))
                {
                    indexInt = Convert.ToInt32(index);
                }

                var currentApproval = approval.FirstOrDefault(o => o.NrpApproval == nrp && o.Status == null && o.IndexLevel == indexInt);

                // jika current approval, absolute bukan approval tujuan yang rejek, dikarenakan status masih null
                if (currentApproval != null)
                {
                    dataSpd.status         = "SPD ditolak " + currentApproval.ApprovalRule.Deskripsi;
                    dataSpd.isApproved     = false;
                    dataSpd.diubahTanggal  = DateTime.Now;
                    dataSpd.isApprovedDate = DateTime.Now;

                    currentApproval.Status       = false;
                    currentApproval.ModifiedDate = DateTime.Now;
                }

                // jika nrp rejek sama dengan nrp approval tujuan, & current approval tidak ditemukan
                if (nrp == dataSpd.nrpApprovalTujuan && currentApproval == null)
                {
                    dataSpd.status = "SPD Ditolak tujuan";

                    dataSpd.isApproved     = false;
                    dataSpd.diubahTanggal  = DateTime.Now;
                    dataSpd.isApprovedDate = DateTime.Now;

                    if (dataSpd.status == "Expired")
                    {
                        returner += "SPD Expired, sehingga tidak bisa di Reject.";
                    }

                    else if (DateTime.Now.Date < dataSpd.tglBerangkat.Date)
                    {
                        returner += "SPD hanya bisa direject pada tanggal : " + dataSpd.tglBerangkat.ToString("dd MMMM yyyy")
                                    + ", atau lebih.";
                    }
                }

                if (string.IsNullOrEmpty(returner))
                {
                    ctx.SubmitChanges();

                    // send informasi ke pembuat
                    EmailCore.InformasiSPD(dataSpd.dibuatOleh, dataSpd.noSPD, dataSpd);
                }

                return(returner);
            }
        }
Beispiel #13
0
        void ProcessNew(string noSPD)
        {
            noSPD = noSPD.Trim();
            using (var ctx = new dsSPDDataContext())
            {
                var dataSpd  = ctx.trSPDs.FirstOrDefault(o => o.noSPD == noSPD);
                var approval = ctx.ApprovalStatus.Where(o => o.NoSPD == noSPD).OrderBy(o => o.IndexLevel);

                if (dataSpd != null && approval != null)
                {
                    switch (dataSpd.isApproved)
                    {
                    case null:
                        if (approval.Where(o => o.Status == null).Count() == 0)
                        {
                            // proses approval tujuan
                            EmailCore.ApprovalSPD(dataSpd.nrpApprovalTujuan, dataSpd.noSPD, string.Empty, dataSpd);
                        }
                        else
                        {
                            // proses next approval
                            var currentApproval = approval.FirstOrDefault(o => o.Status == null);
                            EmailCore.ApprovalSPD(currentApproval.NrpApproval, dataSpd.noSPD, currentApproval.IndexLevel.ToString(), dataSpd);
                        }

                        break;

                    case true:

                        var dataClaim = ctx.trClaims.FirstOrDefault(o => o.noSPD == noSPD);

                        if (dataClaim != null)
                        {
                            if (dataClaim.isSubmit == true)
                            {
                                if (dataClaim.isApprovedAtasan == null && dataClaim.isApprovedFinance == null && dataClaim.isApprovedGA == null)
                                {
                                    //send approval atasan
                                    EmailCore.ApprovalClaim(dataClaim.nrpAtasan, dataClaim.noSPD, dataSpd, "Atasan", dataClaim.status);
                                }

                                if (dataClaim.isApprovedAtasan == true && dataClaim.isApprovedFinance == null && dataClaim.isApprovedGA == null)
                                {
                                    //send approval GA

                                    var role = (from p in ctx.msUsers
                                                where p.roleId == 17
                                                select p.nrp).ToList();

                                    var dataGa = ctx.msKaryawans
                                                 .Where(o =>
                                                        o.coCd == "0001" &&
                                                        role.Contains(o.nrp));

                                    foreach (var item in dataGa)
                                    {
                                        EmailCore.ApprovalClaim(item.nrp, dataClaim.noSPD, dataSpd, "GA", dataClaim.status);
                                    }
                                }

                                if (dataClaim.isApprovedAtasan == true && dataClaim.isApprovedFinance == null && dataClaim.isApprovedGA == true)
                                {
                                    //send approval Finance

                                    var creator = ctx.msKaryawans.FirstOrDefault(o => o.nrp == dataSpd.nrp);

                                    var role2 = (from p in ctx.msUsers
                                                 where p.roleId == 19
                                                 select p.nrp).ToList();

                                    var datafinace = ctx.msKaryawans
                                                     .Where(o =>
                                                            o.coCd == creator.coCd &&
                                                            role2.Contains(o.nrp));

                                    foreach (var item in datafinace)
                                    {
                                        EmailCore.ApprovalClaim(item.nrp, dataClaim.noSPD, dataSpd, "finance", dataClaim.status);
                                    }
                                }
                            }
                        }

                        // claim
                        break;

                    default:
                        break;
                    }
                }
            }
        }
Beispiel #14
0
        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            #region submit old
            if (Session["noSPDc"] == null)
            {
                Response.Redirect("frmClaimApproval.aspx");
            }
            else
            {
                if (txtNoSPD.Text != string.Empty)
                {
                    dsSPDDataContext data  = new dsSPDDataContext();
                    trClaim          claim = data.trClaims.FirstOrDefault(o => o.noSPD == txtNoSPD.Text);
                    trSPD            spd   = data.trSPDs.FirstOrDefault(o => o.noSPD == claim.noSPD);

                    if (spd.isApproved == true && spd.isCancel == null)
                    {
                        getFromForm(ref claim);

                        try
                        {
                            btnSubmit.Enabled   = false;
                            btnSave.Enabled     = false;
                            claim.nrpAtasan     = spd.nrpAtasan;
                            claim.status        = "Menunggu approval atasan";
                            claim.isSubmit      = true;
                            claim.isSubmitDate  = DateTime.Now;
                            claim.diubahOleh    = karyawan.nrp;
                            claim.diubahTanggal = DateTime.Now;

                            msKaryawan kary = new msKaryawan();
                            if (spd.nrp == "99999999")
                            {
                                kary.EMail        = spd.email;
                                kary.nrp          = spd.nrp;
                                kary.namaLengkap  = spd.namaLengkap;
                                kary.golongan     = "III";
                                kary.Job          = spd.jabatan;
                                kary.posisi       = spd.jabatan;
                                kary.coCd         = "1";
                                kary.kodePSubArea = "1";
                                kary.kodePA       = "1";
                            }
                            else
                            {
                                kary = (from kar in data.msKaryawans
                                        where kar.nrp == spd.nrp
                                        select kar).First();
                            }
                            data.SubmitChanges();


                            EmailCore.ApprovalClaim(claim.nrpAtasan, spd.noSPD, spd, "Atasan", claim.status);

                            lblKet.Text = "Claim berhasil di Submit";
                            data.Dispose();
                        }
                        catch (Exception ex)
                        {
                            Response.Write(ex.Message);
                        }
                    }
                }
            }
            #endregion
        }