// GET: asset_license/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            tr_asset_registration ass_reg = db.tr_asset_registration.Find(id);

            if (ass_reg == null)
            {
                return(HttpNotFound("Assset not found."));
            }

            asset_licenseViewModel asset_model = new asset_licenseViewModel()
            {
                FormMode = EnumFormModeKey.Form_Edit,

                asset_parent_id = (int)ass_reg.asset_id,
                asset_parent    = ass_reg
            };

            ms_vendor msvendor = db.ms_vendor.Find(ass_reg.vendor_id);

            asset_model.vendor_name = msvendor.vendor_name;

            //Data view
            asset_model.asset_license_list = (from aw in db.tr_asset_license
                                              where (aw.fl_active == true && aw.deleted_date == null && aw.asset_id == id)
                                              select aw).ToList <tr_asset_license>();

            return(View(asset_model));
        }
Beispiel #2
0
        private string MutationNumberNew(int?asset_id)
        {
            tr_asset_registration tr_asset   = db.tr_asset_registration.Find(asset_id);
            ms_asmin_company      company    = db.ms_asmin_company.Find(tr_asset.company_id);
            ms_department         department = db.ms_department.Find(tr_asset.department_id);
            ms_asset_category     category   = db.ms_asset_category.Find(tr_asset.category_id);
            string code = string.Empty;

            code += "M";
            code += company.company_code;
            code += department.department_code;
            code += category.category_code;
            code += DateTime.Today.Year;
            code += DateTime.Today.Month.ToString().PadLeft(2, '0');

            var _lastno = (from dr in db.tr_disposal_request
                           where dr.disposal_number.Contains(code)
                           orderby dr.request_id descending
                           select dr).ToList <tr_disposal_request>();

            if (_lastno.Count > 0)
            {
                tr_disposal_request lastno = _lastno.FirstOrDefault();
                string currentno           = (Convert.ToInt32(lastno.disposal_number.Substring((lastno.disposal_number.Length - 2), 2)) + 1).ToString();
                code += currentno.PadLeft(2, '0');
            }
            else
            {
                code += "01";
            }
            code += "-";
            code += tr_asset.asset_number.Substring((tr_asset.asset_number.Length - 2), 2);

            return(code);
        }
Beispiel #3
0
        public ActionResult DeleteConfirmed(int id)
        {
            tr_asset_registration tr_asset_registration = db.tr_asset_registration.Find(id);

            db.tr_asset_registration.Remove(tr_asset_registration);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
        // GET: asset_insurance/Edit/5
        public ActionResult Edit(int? id, int? idw)
        {
            if (id == null || idw == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }

            tr_asset_registration ass_reg = db.tr_asset_registration.Find(id);
            if (ass_reg == null)
            {
                return HttpNotFound("Assset not found.");
            }

            asset_insuranceViewModel asset_model = new asset_insuranceViewModel()
            {
                FormMode = EnumFormModeKey.Form_Edit,

                asset_parent_id = (int)ass_reg.asset_id,
                asset_parent = ass_reg,
                insurance_list = db.ms_insurance.Where(r => r.fl_active == true && r.deleted_date == null).ToList()
            };

            ms_vendor msvendor = db.ms_vendor.Find(ass_reg.vendor_id);
            asset_model.vendor_name = msvendor.vendor_name;

            tr_asset_insurance ass_insurance = db.tr_asset_insurance.Find(idw);
            if (ass_insurance != null)
            {
                asset_model.insurance_activa_id = ass_insurance.insurance_activa_id;
                asset_model.insurance_activa_number = ass_insurance.insurance_activa_number;
                asset_model.insurance_activa_name = ass_insurance.insurance_activa_name;
                asset_model.insurance_activa_date = ass_insurance.insurance_activa_date;
                asset_model.insurance_activa_exp_date = ass_insurance.insurance_activa_exp_date;
                asset_model.insurance_id = ass_insurance.insurance_id;
                asset_model.insurance_activa_description = ass_insurance.insurance_activa_description;
            }

            //Data view edit
            asset_model.detail_insurance_list = (from aw in db.tr_asset_insurance
                                                 where (aw.fl_active == true && aw.deleted_date == null && aw.asset_id == id)

                                                 join a in db.ms_insurance on aw.insurance_id equals a.insurance_id
                                                 where (a.fl_active == true && a.deleted_date == null)

                                                 select new asset_insurancedetailViewModel()
                                                 {
                                                     insurance_activa_id = aw.insurance_activa_id,
                                                     insurance_activa_number = aw.insurance_activa_number,
                                                     insurance_activa_name = aw.insurance_activa_name,
                                                     insurance_activa_date = aw.insurance_activa_date,
                                                     insurance_activa_exp_date = aw.insurance_activa_exp_date,
                                                     insurance_id = a.insurance_id,
                                                     insurance_name = a.insurance_name,
                                                     insurance_activa_description = aw.insurance_activa_description
                                                 }).ToList<asset_insurancedetailViewModel>();

            return View(asset_model);
        }
Beispiel #5
0
 public ActionResult Edit([Bind(Include = "asset_id,asset_type_id,asset_number,company_id,asset_reg_location_id,asset_reg_pic_id,category_id,asset_po_number,asset_do_number,asset_name,asset_merk,asset_serial_number,vendor_id,asset_receipt_date,location_id,department_id,asset_description,fl_active,created_date,created_by,updated_date,updated_by,deleted_date,deleted_by,org_id")] tr_asset_registration tr_asset_registration)
 {
     if (ModelState.IsValid)
     {
         db.Entry(tr_asset_registration).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(tr_asset_registration));
 }
        public ActionResult Edit([Bind(Include = "warranty_id, asset_parent_id, warranty_number, warranty_item_name, warranty_date, warranty_exp_date, warranty_description")] asset_warrantyViewModel asset_wrt)
        {
            if (asset_wrt.warranty_date > DateTime.Today)
            {
                ModelState.AddModelError("warranty_date", "Please enter a valid date.");
            }

            if (asset_wrt.warranty_date > asset_wrt.warranty_exp_date)
            {
                ModelState.AddModelError("warranty_exp_date", "Warranty expired date must be after warranty date.");
            }

            if (ModelState.IsValid && asset_wrt.warranty_id > 0)
            {
                tr_asset_warranty ass_warranty = db.tr_asset_warranty.Find(asset_wrt.warranty_id);
                ass_warranty.warranty_number      = asset_wrt.warranty_number;
                ass_warranty.warranty_item_name   = asset_wrt.warranty_item_name;
                ass_warranty.warranty_date        = asset_wrt.warranty_date;
                ass_warranty.warranty_exp_date    = asset_wrt.warranty_exp_date;
                ass_warranty.warranty_description = asset_wrt.warranty_description;

                ass_warranty.fl_active    = true;
                ass_warranty.updated_date = DateTime.Now;
                ass_warranty.updated_by   = UserProfile.UserId;
                ass_warranty.deleted_date = null;
                ass_warranty.deleted_by   = null;
                ass_warranty.org_id       = UserProfile.OrgId;

                db.Entry(ass_warranty).State = EntityState.Modified;
                db.SaveChanges();

                return(RedirectToAction("Index"));
            }

            tr_asset_registration ass_reg = db.tr_asset_registration.Find(asset_wrt.asset_parent_id);

            asset_wrt.FormMode = EnumFormModeKey.Form_Edit;

            asset_wrt.asset_parent_id = (int)ass_reg.asset_id;
            asset_wrt.asset_parent    = ass_reg;

            ms_vendor msvendor = db.ms_vendor.Find(ass_reg.vendor_id);

            asset_wrt.vendor_name = msvendor.vendor_name;

            //Data view edit
            asset_wrt.asset_warranty_list = (from aw in db.tr_asset_warranty
                                             where (aw.fl_active == true && aw.deleted_date == null && aw.asset_id == asset_wrt.asset_parent_id)
                                             select aw).ToList <tr_asset_warranty>();

            return(View(asset_wrt));
        }
Beispiel #7
0
        // GET: asset_registration/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            tr_asset_registration tr_asset_registration = db.tr_asset_registration.Find(id);

            if (tr_asset_registration == null)
            {
                return(HttpNotFound());
            }
            return(View(tr_asset_registration));
        }
        public ActionResult Edit([Bind(Include = "license_id, asset_parent_id, license_number, license_name, license_issued_by, license_date, license_exp_date, license_description")] asset_licenseViewModel asset_lcs)
        {
            if (asset_lcs.license_date > DateTime.Today)
            {
                ModelState.AddModelError("license_date", "Please enter a valid date.");
            }

            if (asset_lcs.license_date > asset_lcs.license_exp_date)
            {
                ModelState.AddModelError("license_exp_date", "license expired date must be after license date.");
            }

            if (ModelState.IsValid && asset_lcs.license_id > 0)
            {
                tr_asset_license ass_license = db.tr_asset_license.Find(asset_lcs.license_id);
                ass_license.license_number      = asset_lcs.license_number;
                ass_license.license_name        = asset_lcs.license_name;
                ass_license.license_issued_by   = asset_lcs.license_issued_by;
                ass_license.license_date        = asset_lcs.license_date;
                ass_license.license_exp_date    = asset_lcs.license_exp_date;
                ass_license.license_description = asset_lcs.license_description;

                ass_license.fl_active    = true;
                ass_license.updated_date = DateTime.Now;
                ass_license.updated_by   = UserProfile.UserId;
                ass_license.deleted_date = null;
                ass_license.deleted_by   = null;
                ass_license.org_id       = UserProfile.OrgId;

                db.Entry(ass_license).State = EntityState.Modified;
                db.SaveChanges();

                return(RedirectToAction("Index"));
            }

            tr_asset_registration ass_reg = db.tr_asset_registration.Find(asset_lcs.asset_parent_id);

            asset_lcs.FormMode = EnumFormModeKey.Form_Edit;

            asset_lcs.asset_parent_id = (int)ass_reg.asset_id;
            asset_lcs.asset_parent    = ass_reg;

            //Data view edit
            asset_lcs.asset_license_list = (from aw in db.tr_asset_license
                                            where (aw.fl_active == true && aw.deleted_date == null && aw.asset_id == asset_lcs.asset_parent_id)
                                            select aw).ToList <tr_asset_license>();

            return(View(asset_lcs));
        }
        // GET: asset_license/Edit/5
        public ActionResult Edit(int?id, int?idw)
        {
            if (id == null || idw == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            tr_asset_registration ass_reg = db.tr_asset_registration.Find(id);

            if (ass_reg == null)
            {
                return(HttpNotFound("Assset not found."));
            }

            asset_licenseViewModel asset_model = new asset_licenseViewModel()
            {
                FormMode = EnumFormModeKey.Form_Edit,

                asset_parent_id = (int)ass_reg.asset_id,
                asset_parent    = ass_reg
            };

            ms_vendor msvendor = db.ms_vendor.Find(ass_reg.vendor_id);

            asset_model.vendor_name = msvendor.vendor_name;

            tr_asset_license ass_license = db.tr_asset_license.Find(idw);

            if (ass_license != null)
            {
                asset_model.license_id          = ass_license.license_id;
                asset_model.license_number      = ass_license.license_number;
                asset_model.license_name        = ass_license.license_name;
                asset_model.license_issued_by   = ass_license.license_issued_by;
                asset_model.license_date        = ass_license.license_date;
                asset_model.license_exp_date    = ass_license.license_exp_date;
                asset_model.license_description = ass_license.license_description;
            }

            //Data view edit
            asset_model.asset_license_list = (from aw in db.tr_asset_license
                                              where (aw.fl_active == true && aw.deleted_date == null && aw.asset_id == id)
                                              select aw).ToList <tr_asset_license>();

            return(View(asset_model));
        }
        //[ValidateAntiForgeryToken]
        public JsonResult DeleteConfirmed(int id)
        {
            tr_asset_registration tr_asset_registration = db.tr_asset_registration.Find(id);

            if (tr_asset_registration != null)
            {
                tr_asset_registration.fl_active    = false;
                tr_asset_registration.deleted_by   = UserProfile.OrgId;
                tr_asset_registration.deleted_date = DateTime.Now;

                db.Entry(tr_asset_registration).State = EntityState.Modified;
                db.SaveChanges();
                return(Json(1, JsonRequestBehavior.AllowGet));
            }
            else
            {
                return(Json(0, JsonRequestBehavior.AllowGet));
            }
            //return RedirectToAction("Index");

            //db.tr_asset_registration.Remove(tr_asset_registration);
            //db.SaveChanges();
            //return RedirectToAction("Index");
        }
        public ActionResult Edit([Bind(Include = "asset_parent_id,asset_number,company_id,asset_reg_location_id,asset_reg_pic_id,category_id,asset_po_number,asset_do_number,asset_name,asset_merk,asset_serial_number,vendor_id,asset_receipt_date,location_id,department_id,employee_id,asset_description,asset_file_attach")] subasset_registrationViewModel asset_reg)
        {
            int asset_id = Convert.ToInt32(Request.Form["asset_id"]);

            if (ModelState.IsValid && asset_id > 0)
            {
                using (DbContextTransaction dbTran = db.Database.BeginTransaction())
                {
                    try
                    {
                        #region SUBASSET
                        tr_asset_registration ass_reg = db.tr_asset_registration.Find(asset_id);
                        ass_reg.asset_type_id   = (int)Enum_asset_type_Key.AssetChild; //child
                        ass_reg.asset_parent_id = asset_reg.asset_parent_id;

                        ass_reg.company_id = asset_reg.company_id;
                        asset_reg.company  = db.ms_asmin_company.Find(asset_reg.company_id);

                        ass_reg.asset_reg_location_id = asset_reg.asset_reg_location_id;
                        asset_reg.asset_reg_location  = db.ms_asset_register_location.Find(asset_reg.asset_reg_location_id);

                        ass_reg.asset_reg_pic_id = asset_reg.asset_reg_pic_id;
                        asset_reg.asset_reg_pic  = db.ms_asset_register_pic.Find(asset_reg.asset_reg_pic_id);

                        ass_reg.category_id      = asset_reg.category_id;
                        asset_reg.asset_category = db.ms_asset_category.Find(asset_reg.category_id);

                        asset_reg.department = db.ms_department.Find(asset_reg.department_id);

                        if (string.IsNullOrWhiteSpace(ass_reg.asset_number))   //incase nomor belum ada --> koreksi nomornya
                        {
                            /*no aktifa seq*/
                            int _last_no = db.tr_asset_registration.Where(r => r.asset_parent_id == asset_reg.asset_parent_id).Count();
                            _last_no++;
                            string   no_activa  = _last_no.ToString().PadLeft(2, '0');
                            string[] complex_no = ass_reg.tr_asset_registration2.asset_number.Split(new char[3] {
                                '.', '-', '/'
                            });
                            ass_reg.asset_number = complex_no[0] + "-" + no_activa;
                        }
                        else
                        {
                            ass_reg.asset_number = asset_reg.asset_number;
                        }

                        ass_reg.asset_po_number     = asset_reg.asset_po_number;
                        ass_reg.asset_do_number     = asset_reg.asset_do_number;
                        ass_reg.asset_name          = asset_reg.asset_name;
                        ass_reg.asset_merk          = asset_reg.asset_merk;
                        ass_reg.asset_serial_number = asset_reg.asset_serial_number;
                        ass_reg.vendor_id           = asset_reg.vendor_id;
                        ass_reg.asset_description   = asset_reg.asset_description;
                        ass_reg.asset_receipt_date  = asset_reg.asset_receipt_date;
                        ass_reg.location_id         = asset_reg.location_id;
                        ass_reg.department_id       = asset_reg.department_id;
                        ass_reg.employee_id         = asset_reg.employee_id;

                        ass_reg.fl_active    = true;
                        ass_reg.updated_date = DateTime.Now;
                        ass_reg.updated_by   = UserProfile.UserId;
                        ass_reg.deleted_date = null;
                        ass_reg.deleted_by   = null;
                        ass_reg.org_id       = UserProfile.OrgId;

                        db.Entry(ass_reg).State = EntityState.Modified;
                        db.SaveChanges();
                        #endregion

                        #region FILE SUPBASSET
                        if (Request.Files.Count > 0)
                        {
                            //var file = Request.Files[0];
                            app_root_path = Server.MapPath("~/");
                            if (string.IsNullOrWhiteSpace(base_image_path))
                            {
                                base_image_path = subasset_registrationViewModel.path_file_asset;
                            }

                            string img_path = Server.MapPath(base_image_path);
                            if (!Directory.Exists(img_path))
                            {
                                Directory.CreateDirectory(img_path);
                            }

                            var file = Request.Files["asset_img_file"];
                            if (file != null && file.ContentLength > 0)
                            {
                                string fileName = ""; string path = "";

                                //check existing and delete dari db dan folder
                                tr_asset_image img_db = db.tr_asset_image.SingleOrDefault(c => c.asset_id == asset_id);
                                if (img_db != null)
                                {
                                    fileName        = img_db.asset_img_address;
                                    base_image_path = subasset_registrationViewModel.path_file_asset;
                                    img_path        = Server.MapPath(base_image_path);
                                    path            = Path.Combine(img_path, fileName);
                                    if (System.IO.File.Exists(path))
                                    {
                                        System.IO.File.Delete(path);
                                    }

                                    db.tr_asset_image.Remove(img_db);
                                    db.SaveChanges();
                                }

                                //insert new
                                fileName = "asset" + ass_reg.asset_id.ToString() + "_" + Path.GetFileName(file.FileName);
                                path     = Path.Combine(img_path, fileName);
                                file.SaveAs(path);

                                tr_asset_image _ass_img = new tr_asset_image()
                                {
                                    asset_id          = ass_reg.asset_id,
                                    asset_img_address = fileName,
                                    asset_qrcode      = GenerateQRCode(asset_reg.asset_number)
                                };
                                db.tr_asset_image.Add(_ass_img);
                                db.SaveChanges();
                            }
                        }
                        #endregion

                        dbTran.Commit();
                    }
                    catch (Exception _exc)
                    {
                        dbTran.Rollback();
                        throw new Exception("Fail to save update sub-asset." + _exc.Message);
                    }
                }
                return(RedirectToAction("Index"));
            }

            #region complete the VM
            if (asset_reg.asset_parent_list == null)
            {
                asset_reg.asset_parent_list = db.tr_asset_registration.Where(r => r.fl_active == true && r.deleted_date == null).ToList();
            }

            if (asset_reg.company_list == null)
            {
                asset_reg.company_list = db.ms_asmin_company.Where(r => r.fl_active == true && r.deleted_date == null).ToList();
            }

            if (asset_reg.asset_reg_location_list == null)
            {
                asset_reg.asset_reg_location_list = db.ms_asset_register_location.Where(r => r.fl_active == true && r.deleted_date == null).ToList();
            }

            if (asset_reg.asset_reg_pic_list == null)
            {
                asset_reg.asset_reg_pic_list = db.ms_asset_register_pic.Where(r => r.fl_active == true && r.deleted_date == null).ToList();
            }

            if (asset_reg.asset_category_list == null)
            {
                asset_reg.asset_category_list = db.ms_asset_category.Where(r => r.fl_active == true && r.deleted_date == null).ToList();
            }

            if (asset_reg.vendor_list == null)
            {
                asset_reg.vendor_list = db.ms_vendor.Where(r => r.fl_active == true && r.deleted_date == null).ToList();
            }

            if (asset_reg.asset_location_list == null)
            {
                asset_reg.asset_location_list = db.ms_asset_location.Where(r => r.fl_active == true && r.deleted_date == null).ToList();
            }

            if (asset_reg.department_list == null)
            {
                asset_reg.department_list = db.ms_department.Where(r => r.fl_active == true && r.deleted_date == null).ToList();
            }

            if (asset_reg.employee_list == null)
            {
                asset_reg.employee_list = db.ms_employee.AsEnumerable().Where(r => r.fl_active == true && r.deleted_date == null).Select(e => new ms_employee {
                    employee_id = e.employee_id, employee_name = "[" + e.employee_nik + "] - " + e.employee_name, employee_email = e.employee_email
                }).ToList();
            }
            #endregion

            return(View(asset_reg));
        }
        // GET: asset_registration/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            tr_asset_registration ass_reg = db.tr_asset_registration.Find(id);

            if (ass_reg == null)
            {
                return(HttpNotFound("Assset not found."));
            }

            subasset_registrationViewModel asset_model = new subasset_registrationViewModel()
            {
                FormMode                = EnumFormModeKey.Form_Edit,
                asset_type_id           = (int)Enum_asset_type_Key.AssetChild,
                asset_parent            = ass_reg.tr_asset_registration2,
                asset_parent_id         = (int)ass_reg.asset_parent_id,
                company_list            = db.ms_asmin_company.Where(r => r.fl_active == true && r.deleted_date == null).ToList(),
                asset_reg_location_list = db.ms_asset_register_location.Where(r => r.fl_active == true && r.deleted_date == null).ToList(),
                asset_reg_pic_list      = db.ms_asset_register_pic.Where(r => r.fl_active == true && r.deleted_date == null).ToList(),
                asset_category_list     = db.ms_asset_category.Where(r => r.fl_active == true && r.deleted_date == null).ToList(),
                vendor_list             = db.ms_vendor.Where(r => r.fl_active == true && r.deleted_date == null).ToList(),
                asset_location_list     = db.ms_asset_location.Where(r => r.fl_active == true && r.deleted_date == null).ToList(),
                department_list         = db.ms_department.Where(r => r.fl_active == true && r.deleted_date == null).ToList(),
                employee_list           = db.ms_employee.AsEnumerable().Where(r => r.fl_active == true && r.deleted_date == null).Select(e => new ms_employee {
                    employee_id = e.employee_id, employee_name = "[" + e.employee_nik + "] - " + e.employee_name, employee_email = e.employee_email
                }).ToList(),

                asset_id              = ass_reg.asset_id,
                asset_number          = ass_reg.asset_number,
                company_id            = ass_reg.company_id,
                asset_reg_location_id = ass_reg.asset_reg_location_id,
                asset_reg_pic_id      = ass_reg.asset_reg_pic_id,
                category_id           = ass_reg.category_id,
                asset_serial_number   = ass_reg.asset_serial_number,
                asset_po_number       = ass_reg.asset_po_number,
                asset_do_number       = ass_reg.asset_do_number,
                asset_name            = ass_reg.asset_name,
                asset_merk            = ass_reg.asset_merk,
                vendor_id             = ass_reg.vendor_id,
                asset_receipt_date    = ass_reg.asset_receipt_date,
                location_id           = ass_reg.location_id,
                department_id         = ass_reg.department_id,
                employee_id           = ass_reg.employee_id,
                asset_description     = ass_reg.asset_description,

                tr_asset_images = db.tr_asset_image.SingleOrDefault(r => r.asset_id == ass_reg.asset_id)
            };

            bool   _hasImage       = false;
            string base_image_path = subasset_registrationViewModel.path_file_asset;
            string img_path        = Server.MapPath(base_image_path);

            if (!Directory.Exists(img_path))
            {
                Directory.CreateDirectory(img_path);
            }

            if (asset_model.tr_asset_images != null)
            {
                var    fileName = asset_model.tr_asset_images.asset_img_address;
                string path     = Path.Combine(img_path, fileName);
                _hasImage = System.IO.File.Exists(path);
            }
            asset_model.hasImage = _hasImage;

            return(View(asset_model));
        }
        public ActionResult Create([Bind(Include = "asset_parent_id,asset_number,company_id,asset_reg_location_id,asset_reg_pic_id,category_id,asset_po_number,asset_do_number,asset_name,asset_merk,asset_serial_number,vendor_id,asset_receipt_date,location_id,department_id,employee_id,asset_description,asset_file_attach")] subasset_registrationViewModel asset_reg)
        {
            if (ModelState.IsValid)
            {
                using (DbContextTransaction dbTran = db.Database.BeginTransaction())
                {
                    try
                    {
                        #region SUBASSET
                        tr_asset_registration asset_parent = db.tr_asset_registration.Find(asset_reg.asset_parent_id);

                        int _last_no = db.tr_asset_registration.Where(a => a.asset_parent_id == asset_reg.asset_parent_id).Count();

                        /*no aktifa seq*/
                        _last_no++;
                        string no_activa = _last_no.ToString().PadLeft(2, '0');

                        string[] complex_no = asset_parent.asset_number.Split(new char[3] {
                            '.', '-', '/'
                        });

                        asset_reg.asset_number = complex_no[0] + "-" + no_activa;

                        tr_asset_registration ass_reg = new tr_asset_registration();
                        ass_reg.asset_type_id          = (int)Enum_asset_type_Key.AssetChild; //child
                        ass_reg.asset_parent_id        = asset_reg.asset_parent_id;
                        ass_reg.tr_asset_registration2 = asset_parent;

                        ass_reg.asset_number          = asset_reg.asset_number;
                        ass_reg.company_id            = asset_reg.company_id;
                        ass_reg.asset_reg_location_id = asset_reg.asset_reg_location_id;
                        ass_reg.asset_reg_pic_id      = asset_reg.asset_reg_pic_id;
                        ass_reg.category_id           = asset_reg.category_id;
                        ass_reg.asset_po_number       = asset_reg.asset_po_number;
                        ass_reg.asset_do_number       = asset_reg.asset_do_number;
                        ass_reg.asset_name            = asset_reg.asset_name;
                        ass_reg.asset_merk            = asset_reg.asset_merk;
                        ass_reg.asset_serial_number   = asset_reg.asset_serial_number;
                        ass_reg.vendor_id             = asset_reg.vendor_id;
                        ass_reg.asset_receipt_date    = asset_reg.asset_receipt_date;
                        ass_reg.location_id           = asset_reg.location_id;
                        ass_reg.current_location_id   = asset_reg.location_id;
                        ass_reg.department_id         = asset_reg.department_id;
                        ass_reg.current_department_id = asset_reg.department_id;
                        ass_reg.asset_description     = asset_reg.asset_description;
                        ass_reg.employee_id           = asset_reg.employee_id;
                        ass_reg.current_employee_id   = asset_reg.employee_id;

                        ass_reg.fl_active    = true;
                        ass_reg.created_date = DateTime.Now;
                        ass_reg.created_by   = UserProfile.UserId;
                        ass_reg.updated_date = DateTime.Now;
                        ass_reg.updated_by   = UserProfile.UserId;
                        ass_reg.deleted_date = null;
                        ass_reg.deleted_by   = null;
                        ass_reg.org_id       = UserProfile.OrgId;

                        ass_reg = db.tr_asset_registration.Add(ass_reg);
                        db.SaveChanges();
                        #endregion

                        #region FILEASSET
                        //ass_reg.asset_file_attach = asset_reg.asset_file_attach;
                        if (Request.Files.Count > 0)
                        {
                            //var file = Request.Files[0];
                            app_root_path = Server.MapPath("~/");
                            if (string.IsNullOrWhiteSpace(base_image_path))
                            {
                                base_image_path = subasset_registrationViewModel.path_file_asset;
                            }

                            string img_path = Server.MapPath(base_image_path);
                            if (!Directory.Exists(img_path))
                            {
                                Directory.CreateDirectory(img_path);
                            }

                            var file = Request.Files["asset_img_file"];
                            if (file != null && file.ContentLength > 0)
                            {
                                var fileName = "asset" + ass_reg.asset_id.ToString() + "_" + Path.GetFileName(file.FileName);
                                var path     = Path.Combine(img_path, fileName);
                                file.SaveAs(path);
                                tr_asset_image _ass_img = new tr_asset_image()
                                {
                                    asset_id          = ass_reg.asset_id,
                                    asset_img_address = fileName,
                                    asset_qrcode      = GenerateQRCode(asset_reg.asset_number)
                                };
                                db.tr_asset_image.Add(_ass_img);
                                db.SaveChanges();
                            }
                        }
                        #endregion

                        dbTran.Commit();
                    }
                    catch (Exception _exc)
                    {
                        dbTran.Rollback();
                        throw new Exception("Fail to save create new sub-asset." + _exc.Message);
                    }
                }
                #region "Send Email Notif to accounting department"
                try
                {
                    ms_disposal_type Dept3 = db.ms_disposal_type.Find(3);
                    int acct_id            = Convert.ToInt32(Dept3.disposal_by_dept_id);
                    var _qry = (from dept in db.ms_department.Where(dept => dept.department_id == acct_id) select dept).ToList().FirstOrDefault();
                    if (_qry == null)
                    {
                        throw new Exception("Department not found");
                    }

                    sy_email_log sy_email_log = new sy_email_log();
                    sy_email_log.elog_to       = _qry.department_email;
                    sy_email_log.elog_subject  = string.Format("Sub Asset Registration");
                    sy_email_log.elog_template = "EMAIL_TEMPLATE_90";

                    var _bodymail = app_setting.APPLICATION_SETTING.Where(c => c.app_key.Contains("EMAIL_TEMPLATE_90")).FirstOrDefault();
                    if (_bodymail == null)
                    {
                        throw new Exception("Email Template 01 not found");
                    }

                    string strBodyMail = _bodymail.app_value;
                    strBodyMail = strBodyMail.Replace("[to]", _qry.department_name + " Department");
                    strBodyMail = strBodyMail.Replace("[action]", "Dispose");
                    strBodyMail = strBodyMail.Replace("[assetnumber]", asset_reg.asset_number);
                    strBodyMail = strBodyMail.Replace("[assetname]", asset_reg.asset_name);

                    ms_asset_location loc = db.ms_asset_location.Find(asset_reg.location_id);
                    if (loc == null)
                    {
                        throw new Exception("Sub Asset Location not found");
                    }
                    strBodyMail = strBodyMail.Replace("[assetlocation]", loc.location_name);

                    ms_department deptment = db.ms_department.Find(asset_reg.department_id);
                    if (deptment == null)
                    {
                        throw new Exception("Department not found");
                    }
                    strBodyMail = strBodyMail.Replace("[department]", deptment.department_name);

                    sy_email_log.elog_body = strBodyMail;
                    var EmailHelper = new EmailHelper()
                    {
                        ToAddress      = sy_email_log.elog_to,
                        Email_Template = sy_email_log.elog_template,
                        MailSubject    = sy_email_log.elog_subject,
                        MailBody       = sy_email_log.elog_body
                    };
                    EmailHelper.Send();
                }
                catch { }
                #endregion
                return(RedirectToAction("Index"));
            }

            #region complete the VM
            if (asset_reg.asset_parent_list == null)
            {
                asset_reg.asset_parent_list = db.tr_asset_registration.Where(r => r.fl_active == true && r.deleted_date == null).ToList();
            }

            if (asset_reg.company_list == null)
            {
                asset_reg.company_list = db.ms_asmin_company.Where(r => r.fl_active == true && r.deleted_date == null).ToList();
            }

            if (asset_reg.asset_reg_location_list == null)
            {
                asset_reg.asset_reg_location_list = db.ms_asset_register_location.Where(r => r.fl_active == true && r.deleted_date == null).ToList();
            }

            if (asset_reg.asset_reg_pic_list == null)
            {
                asset_reg.asset_reg_pic_list = db.ms_asset_register_pic.Where(r => r.fl_active == true && r.deleted_date == null).ToList();
            }

            if (asset_reg.asset_category_list == null)
            {
                asset_reg.asset_category_list = db.ms_asset_category.Where(r => r.fl_active == true && r.deleted_date == null).ToList();
            }

            if (asset_reg.vendor_list == null)
            {
                asset_reg.vendor_list = db.ms_vendor.Where(r => r.fl_active == true && r.deleted_date == null).ToList();
            }

            if (asset_reg.asset_location_list == null)
            {
                asset_reg.asset_location_list = db.ms_asset_location.Where(r => r.fl_active == true && r.deleted_date == null).ToList();
            }

            if (asset_reg.department_list == null)
            {
                asset_reg.department_list = db.ms_department.Where(r => r.fl_active == true && r.deleted_date == null).ToList();
            }

            if (asset_reg.employee_list == null)
            {
                asset_reg.employee_list = db.ms_employee.AsEnumerable().Where(r => r.fl_active == true && r.deleted_date == null).Select(e => new ms_employee {
                    employee_id = e.employee_id, employee_name = "[" + e.employee_nik + "] - " + e.employee_name, employee_email = e.employee_email
                }).ToList();
            }

            #endregion

            return(View(asset_reg));
        }
        // GET: asset_registration/Create/5
        public ActionResult Create(int id = 0)
        {
            int parent_id = (int)id;
            subasset_registrationViewModel subasset = null;

            if (parent_id == 0)
            {
                subasset = new subasset_registrationViewModel()
                {
                    FormMode = EnumFormModeKey.Form_New,

                    hasImage = false,

                    asset_id = 0,

                    asset_type_id = (int)Enum_asset_type_Key.AssetChild,

                    asset_parent_id = parent_id,

                    asset_parent_list = db.tr_asset_registration.Where(r => r.fl_active == true && r.deleted_date == null).ToList(),

                    company_list = db.ms_asmin_company.Where(r => r.fl_active == true && r.deleted_date == null).ToList(),

                    asset_reg_location_list = db.ms_asset_register_location.Where(r => r.fl_active == true && r.deleted_date == null).ToList(),

                    asset_reg_pic_list = db.ms_asset_register_pic.Where(r => r.fl_active == true && r.deleted_date == null).ToList(),

                    asset_category_list = db.ms_asset_category.Where(r => r.fl_active == true && r.deleted_date == null).ToList(),

                    vendor_list = db.ms_vendor.Where(r => r.fl_active == true && r.deleted_date == null).ToList(),

                    asset_location_list = db.ms_asset_location.Where(r => r.fl_active == true && r.deleted_date == null).ToList(),

                    department_list = db.ms_department.Where(r => r.fl_active == true && r.deleted_date == null).ToList(),

                    employee_list = db.ms_employee.AsEnumerable().Where(r => r.fl_active == true && r.deleted_date == null).Select(e => new ms_employee {
                        employee_id = e.employee_id, employee_name = "[" + e.employee_nik + "] - " + e.employee_name, employee_email = e.employee_email
                    }).ToList(),

                    asset_receipt_date = DateTime.Now
                };
            }
            else
            {
                tr_asset_registration asset_parent_db = db.tr_asset_registration.Find(parent_id);
                if (asset_parent_db == null)
                {
                    return(RedirectToAction("Create"));
                }

                subasset = new subasset_registrationViewModel()
                {
                    FormMode = EnumFormModeKey.Form_New,

                    hasImage = false,

                    asset_id = 0,

                    asset_type_id = (int)Enum_asset_type_Key.AssetChild,

                    asset_parent      = asset_parent_db,
                    asset_parent_id   = asset_parent_db.asset_id,
                    asset_parent_list = db.tr_asset_registration.Where(r => r.fl_active == true && r.deleted_date == null).ToList(),

                    company_list = db.ms_asmin_company.Where(r => r.fl_active == true && r.deleted_date == null).ToList(),
                    company_id   = asset_parent_db.company_id,
                    company      = asset_parent_db.ms_asmin_company,

                    asset_reg_location_list = db.ms_asset_register_location.Where(r => r.fl_active == true && r.deleted_date == null).ToList(),
                    asset_reg_location_id   = asset_parent_db.asset_reg_location_id,
                    asset_reg_location      = asset_parent_db.ms_asset_register_location,

                    asset_reg_pic_list = db.ms_asset_register_pic.Where(r => r.fl_active == true && r.deleted_date == null).ToList(),
                    asset_reg_pic_id   = asset_parent_db.asset_reg_pic_id,
                    asset_reg_pic      = asset_parent_db.ms_asset_register_pic,

                    asset_category_list = db.ms_asset_category.Where(r => r.fl_active == true && r.deleted_date == null).ToList(),
                    asset_category      = asset_parent_db.ms_asset_category,
                    category_id         = asset_parent_db.category_id,

                    vendor_list = db.ms_vendor.Where(r => r.fl_active == true && r.deleted_date == null).ToList(),
                    vendor      = asset_parent_db.ms_vendor,
                    vendor_id   = asset_parent_db.vendor_id,

                    asset_location_list = db.ms_asset_location.Where(r => r.fl_active == true && r.deleted_date == null).ToList(),
                    asset_location      = asset_parent_db.ms_asset_location,
                    location_id         = asset_parent_db.location_id,

                    department_list = db.ms_department.Where(r => r.fl_active == true && r.deleted_date == null).ToList(),
                    department_id   = asset_parent_db.department_id,
                    department      = asset_parent_db.ms_department,

                    employee_list = db.ms_employee.AsEnumerable().Where(r => r.fl_active == true && r.deleted_date == null).Select(e => new ms_employee {
                        employee_id = e.employee_id, employee_name = "[" + e.employee_nik + "] - " + e.employee_name, employee_email = e.employee_email
                    }).ToList(),
                    employee_id = asset_parent_db.employee_id,
                    employee    = asset_parent_db.ms_employee,

                    asset_receipt_date = DateTime.Now
                };
            }
            return(View(subasset));
        }
        // GET: asset_registration/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            tr_asset_registration tr_asset_registration = db.tr_asset_registration.Find(id);

            if (tr_asset_registration == null)
            {
                return(HttpNotFound());
            }

            var _qry = (from ar in db.tr_asset_registration
                        where (ar.fl_active == true && ar.deleted_date == null && ar.asset_type_id == (int)Enum_asset_type_Key.AssetChild) && ar.asset_id == id

                        join p in db.tr_asset_registration on ar.asset_parent_id equals p.asset_id
                        where (p.fl_active == true && p.deleted_date == null)

                        join a in db.ms_vendor on ar.vendor_id equals a.vendor_id
                        where (a.fl_active == true && a.deleted_date == null)

                        join b in db.ms_asset_register_location on ar.asset_reg_location_id equals b.asset_reg_location_id
                        where (b.fl_active == true && b.deleted_date == null)

                        join c in db.ms_asset_register_pic on ar.asset_reg_pic_id equals c.asset_reg_pic_id
                        where (c.fl_active == true && c.deleted_date == null)

                        join d in db.ms_asset_type on ar.asset_type_id equals d.activa_type_id
                        where (d.fl_active == true && d.deleted_date == null)

                        join e in db.ms_asset_category on ar.category_id equals e.category_id
                        where (e.fl_active == true && e.deleted_date == null)

                        join f in db.ms_asmin_company on ar.company_id equals f.company_id
                        where (f.fl_active == true && f.deleted_date == null)

                        join g in db.ms_department on ar.department_id equals g.department_id
                        where (g.fl_active == true && g.deleted_date == null)

                        join h in db.ms_employee on ar.employee_id equals h.employee_id
                        where (h.fl_active == true && h.deleted_date == null)

                        join i in db.ms_asset_location on ar.location_id equals i.location_id
                        where (i.fl_active == true && i.deleted_date == null)

                        join j in db.tr_asset_image on ar.asset_id equals j.asset_id

                        select new subasset_registrationViewModel()
            {
                asset_parent = p,
                asset_parent_id = (int)ar.asset_parent_id,
                asset_id = ar.asset_id,
                asset_type_id = ar.asset_type_id,
                asset_type = d,
                asset_number = ar.asset_number,
                company_id = ar.company_id,
                company = f,
                asset_reg_location_id = ar.asset_reg_location_id,
                asset_reg_location = b,
                asset_reg_pic_id = ar.asset_reg_pic_id,
                asset_reg_pic = c,
                category_id = ar.category_id,
                asset_category = e,
                asset_po_number = ar.asset_po_number,
                asset_do_number = ar.asset_do_number,
                asset_name = ar.asset_name,
                asset_merk = ar.asset_merk,
                asset_serial_number = ar.asset_serial_number,
                vendor_id = ar.vendor_id,
                vendor = a,
                asset_receipt_date = ar.asset_receipt_date,
                location_id = ar.location_id,
                asset_location = i,
                tr_asset_images = j,
                department_id = ar.department_id,
                department = g,
                employee_id = ar.employee_id,
                employee = h,
                asset_description = ar.asset_description,
            }).First <subasset_registrationViewModel>();

            string imreBase64Data = Convert.ToBase64String(_qry.tr_asset_images.asset_qrcode);
            string imgDataURL     = string.Format("data:image/jpg;base64,{0}", imreBase64Data);

            //Passing image data in viewbag to view
            ViewBag.ImageData = imgDataURL;

            var tuple = new Tuple <subasset_registrationViewModel, string>(_qry, subasset_registrationViewModel.path_file_asset);

            return(View(tuple));
        }
Beispiel #16
0
        public ActionResult DisposalFollowup([Bind(Include = "announcement_id, request_id, announcement_upload_address, announcement_description, asset_number, asset_name, location_name, department_name, fl_SuggestionChanges, approval_suggestion_id")] disposalViewModel disposal_prs)
        {
            tr_disposal_announcement disposal_announcement = db.tr_disposal_announcement.Find(disposal_prs.announcement_id);

            if (disposal_prs.fl_SuggestionChanges == null || disposal_prs.fl_SuggestionChanges == false)
            {
                if (Request.Files.Count > 0)
                {
                    var file = Request.Files["announcement_upload_address"];
                    if (file == null || file.ContentLength == 0)
                    {
                        ModelState.AddModelError("announcement_upload_address", "Berita Acara is Mandatory.");
                    }
                }
            }
            else
            {
                if (disposal_prs.approval_suggestion_id == null || disposal_prs.approval_suggestion_id == 0)
                {
                    ModelState.AddModelError("approval_suggestion_id", "Suggestion is Mandatory.");
                }
            }
            //update disposal request and approval data with transaction
            if (ModelState.IsValid)
            {
                using (var transaction = db.Database.BeginTransaction())
                {
                    try
                    {
                        if (disposal_prs.fl_SuggestionChanges == null || disposal_prs.fl_SuggestionChanges == false)
                        {
                            //Process Normal
                            #region "Save update Disposal Announcement"
                            if (Request.Files.Count > 0)
                            {
                                //var file = Request.Files[0];
                                app_root_path = Server.MapPath("~/");
                                if (string.IsNullOrWhiteSpace(base_file_path))
                                {
                                    base_file_path = asset_registrationViewModel.path_file_disposal;
                                }

                                string _file = Server.MapPath(base_file_path);
                                if (!Directory.Exists(_file))
                                {
                                    Directory.CreateDirectory(_file);
                                }

                                var file = Request.Files["announcement_upload_address"];
                                if (file != null && file.ContentLength > 0)
                                {
                                    var fileName = "dispose_precurement_" + disposal_prs.request_id.ToString() + "_" + Path.GetFileName(file.FileName);
                                    var path     = Path.Combine(_file, fileName);
                                    file.SaveAs(path);

                                    disposal_announcement.announcement_upload_address = fileName;
                                    disposal_announcement.announcement_description    = disposal_prs.announcement_description;
                                    disposal_announcement.announcement_date           = DateTime.Now;
                                    disposal_announcement.announcement_emp_id         = UserProfile.employee_id;

                                    disposal_announcement.fl_remove_asset      = true;
                                    disposal_announcement.remove_asset_dept_id = 5;
                                }
                            }


                            disposal_announcement.updated_date = DateTime.Now;
                            disposal_announcement.updated_by   = UserProfile.UserId;
                            disposal_announcement.deleted_date = null;
                            disposal_announcement.deleted_by   = null;

                            db.Entry(disposal_announcement).State = EntityState.Modified;
                            db.SaveChanges();
                            #endregion

                            #region "kirim email ke PIC Process Disposal"
                            string emailsetting = string.Empty;
                            string to_name      = string.Empty;
                            string freetext     = string.Empty;


                            emailsetting = "EMAIL_TO_DISPOSAL_ACCOUNTING";
                            to_name      = "Department Accounting";
                            freetext     = "Dokumen <strong>Berita Acara</strong> sudah tersedia. Asset menunggu tindak lanjut (<strong>Dispose</strong>) oleh Accounting Department.";


                            var _emailto = app_setting.APPLICATION_SETTING.Where(c => c.app_key.Contains(emailsetting));

                            sy_email_log sy_email_log = new sy_email_log();
                            sy_email_log.elog_to       = _emailto.FirstOrDefault().app_value;
                            sy_email_log.elog_subject  = string.Format("Asset Disposal Need Follow Up (Donation)");
                            sy_email_log.elog_template = "EMAIL_TEMPLATE_05";

                            #region "body mail"
                            var    _bodymail   = app_setting.APPLICATION_SETTING.Where(c => c.app_key.Contains("EMAIL_TEMPLATE_05"));
                            string strBodyMail = _bodymail.FirstOrDefault().app_value;
                            strBodyMail = strBodyMail.Replace("[to]", to_name);
                            strBodyMail = strBodyMail.Replace("[assetnumber]", disposal_prs.asset_number);
                            strBodyMail = strBodyMail.Replace("[aseetname]", disposal_prs.asset_name);
                            strBodyMail = strBodyMail.Replace("[assetlocation]", disposal_prs.location_name);
                            strBodyMail = strBodyMail.Replace("[department]", disposal_prs.department_name);
                            strBodyMail = strBodyMail.Replace("[suggestion]", "Donation");
                            strBodyMail = strBodyMail.Replace("[freetext]", freetext);

                            string linkapp = string.Format("{0}://{1}{2}", Request.Url.Scheme, Request.Url.Authority, Url.Content("~/Account/Login?ReturnUrl=%2f"));
                            string strImg  = string.Format("http://{0}/Content/EmailImage/button_asmin.png", Request.Url.Authority);
                            linkapp     = string.Format(@"<a href={0}><img src=""{1}"" alt=""click for process""/></a>", linkapp, strImg);
                            strBodyMail = strBodyMail.Replace("[link]", linkapp);

                            sy_email_log.elog_body = strBodyMail;
                            #endregion

                            var EmailHelper = new EmailHelper()
                            {
                                ToAddress      = sy_email_log.elog_to,
                                Email_Template = sy_email_log.elog_template,
                                MailSubject    = sy_email_log.elog_subject,
                                MailBody       = sy_email_log.elog_body
                            };
                            EmailHelper.Send();
                            #endregion
                        }
                        else if (disposal_prs.fl_SuggestionChanges == true)
                        {
                            #region "Update Data Announcement"
                            //update flag active = false
                            disposal_announcement.fl_suggestion_changes = true;
                            disposal_announcement.fl_active             = false;
                            disposal_announcement.updated_date          = DateTime.Now;
                            disposal_announcement.updated_by            = UserProfile.UserId;
                            disposal_announcement.deleted_date          = null;
                            disposal_announcement.deleted_by            = null;

                            db.Entry(disposal_announcement).State = EntityState.Modified;
                            db.SaveChanges();
                            #endregion

                            #region "Save create disposal_approval"
                            var refApproval = (from a in db.ms_job_level
                                               where (a.fl_active == true && a.deleted_date == null &&
                                                      a.job_level_id == 2)

                                               join b in db.ms_employee_detail on a.job_level_id equals b.job_level_id
                                               where (b.fl_active == true && b.deleted_date == null &&
                                                      b.department_id == 10 && b.company_id == UserProfile.company_id)

                                               join c in db.ms_employee on b.employee_id equals c.employee_id
                                               where c.fl_active == true && c.deleted_date == null

                                               select new disposalViewModel()
                            {
                                department_id = b.department_id,
                                employee_id = b.employee_id,
                                job_level_id = a.job_level_id,
                                employee_email = c.employee_email,
                                employee_name = c.employee_name
                            }).First <disposalViewModel>();

                            //approval disposal changes level 1
                            tr_disposal_approval disposal_approval = new tr_disposal_approval();
                            disposal_approval.request_id             = disposal_prs.request_id;
                            disposal_approval.approval_date          = null;
                            disposal_approval.approval_dept_id       = refApproval.department_id;
                            disposal_approval.approval_employee_id   = refApproval.employee_id;
                            disposal_approval.approval_level_id      = refApproval.job_level_id;
                            disposal_approval.approval_status_id     = 1;//waiting approval
                            disposal_approval.approval_suggestion_id = disposal_prs.approval_suggestion_id;
                            disposal_approval.fl_active    = true;
                            disposal_approval.created_date = DateTime.Now;
                            disposal_approval.created_by   = UserProfile.UserId;
                            disposal_approval.updated_date = DateTime.Now;
                            disposal_approval.updated_by   = UserProfile.UserId;
                            disposal_approval.deleted_date = null;
                            disposal_approval.deteled_by   = null;
                            disposal_approval.org_id       = UserProfile.OrgId;
                            disposal_approval = db.tr_disposal_approval.Add(disposal_approval);
                            db.SaveChanges();

                            int approval_id = disposal_approval.approval_id;

                            //approval disposal changes level 2
                            tr_disposal_request   disposalrequest = db.tr_disposal_request.Find(disposal_prs.request_id);
                            tr_asset_registration assetreg        = db.tr_asset_registration.Find(disposalrequest.asset_id);

                            if (assetreg.location_id != 1)
                            {
                                var refApproval2 = (from a in db.ms_job_level
                                                    where (a.fl_active == true && a.deleted_date == null &&
                                                           a.job_level_id == 3)

                                                    join b in db.ms_employee_detail on a.job_level_id equals b.job_level_id
                                                    where (b.fl_active == true && b.deleted_date == null &&
                                                           b.department_id == disposalrequest.request_dept_id && b.company_id == assetreg.company_id)

                                                    join c in db.ms_employee on b.employee_id equals c.employee_id
                                                    where c.fl_active == true && c.deleted_date == null

                                                    select new disposalViewModel()
                                {
                                    department_id = b.department_id,
                                    employee_id = b.employee_id,
                                    job_level_id = a.job_level_id,
                                    employee_email = c.employee_email,
                                    employee_name = c.employee_name
                                }).First <disposalViewModel>();

                                disposal_approval                        = new tr_disposal_approval();
                                disposal_approval.request_id             = disposal_prs.request_id;
                                disposal_approval.approval_date          = null;
                                disposal_approval.approval_dept_id       = refApproval2.department_id;
                                disposal_approval.approval_employee_id   = refApproval2.employee_id;
                                disposal_approval.approval_level_id      = refApproval2.job_level_id;
                                disposal_approval.approval_status_id     = 1;//waiting approval
                                disposal_approval.approval_suggestion_id = disposal_prs.approval_suggestion_id;
                                disposal_approval.fl_active              = true;
                                disposal_approval.created_date           = DateTime.Now;
                                disposal_approval.created_by             = UserProfile.UserId;
                                disposal_approval.updated_date           = DateTime.Now;
                                disposal_approval.updated_by             = UserProfile.UserId;
                                disposal_approval.deleted_date           = null;
                                disposal_approval.deteled_by             = null;
                                disposal_approval.org_id                 = UserProfile.OrgId;
                                disposal_approval                        = db.tr_disposal_approval.Add(disposal_approval);
                                db.SaveChanges();
                            }
                            #endregion

                            #region "Kirim email ke Procurement Head"
                            sy_email_log sy_email_log = new sy_email_log();
                            sy_email_log.elog_to       = refApproval.employee_email;
                            sy_email_log.elog_subject  = string.Format("Asset Disposal Changes Need Approval");
                            sy_email_log.elog_template = "EMAIL_TEMPLATE_04";

                            var    _bodymail   = app_setting.APPLICATION_SETTING.Where(c => c.app_key.Contains("EMAIL_TEMPLATE_04"));
                            string strBodyMail = _bodymail.FirstOrDefault().app_value;
                            strBodyMail = strBodyMail.Replace("[to]", refApproval.employee_name);
                            strBodyMail = strBodyMail.Replace("[action]", "Disposal Changes");
                            strBodyMail = strBodyMail.Replace("[assetnumber]", disposal_prs.asset_number);
                            strBodyMail = strBodyMail.Replace("[aseetname]", disposal_prs.asset_name);
                            strBodyMail = strBodyMail.Replace("[assetlocation]", disposal_prs.location_name);
                            strBodyMail = strBodyMail.Replace("[department]", disposal_prs.department_name);

                            int     empid  = Convert.ToInt32(refApproval.employee_id);
                            ms_user msuser = (from m in db.ms_user
                                              where m.employee_id == empid
                                              select m).FirstOrDefault();

                            //token untuk link approval di email
                            string token = string.Format("DisposalApproval|Approval/{0}|{1}|{2}|{3}", approval_id, msuser.user_name, UserProfile.company_id, UserProfile.asset_reg_location_id);
                            token = CryptorHelper.Encrypt(token, "MD5", true).Replace("+", "plus").Replace("=", "equal");
                            string linkapp = string.Format("{0}://{1}{2}", Request.Url.Scheme, Request.Url.Authority, Url.Content("~/Account/Login?ReturnUrl=%2f&token=" + token));
                            string strImg  = string.Format("http://{0}/Content/EmailImage/button_approval_disposal.png", Request.Url.Authority);
                            linkapp     = string.Format(@"<a href={0}><img src=""{1}"" alt=""click for approval""/></a>", linkapp, strImg);
                            strBodyMail = strBodyMail.Replace("[link]", linkapp);

                            sy_email_log.elog_body = strBodyMail;

                            var EmailHelper = new EmailHelper()
                            {
                                ToAddress      = sy_email_log.elog_to,
                                Email_Template = sy_email_log.elog_template,
                                MailSubject    = sy_email_log.elog_subject,
                                MailBody       = sy_email_log.elog_body
                            };
                            EmailHelper.Send();
                            #endregion
                        }
                        transaction.Commit();
                        ViewBag.ResultMessage = "Update table successfully.";
                        return(RedirectToAction("Index"));
                    }
                    catch (Exception)
                    {
                        // roll back all database operations, if any thing goes wrong
                        transaction.Rollback();
                        ViewBag.ResultMessage = "Error occured, records rolledback.";
                    }
                }
            }

            disposal_prs = DataDisposalView(disposal_prs.request_id, disposal_prs);

            return(View(disposal_prs));
        }
        public ActionResult Edit([Bind(Include = "insurance_activa_id, asset_parent_id, insurance_activa_number, insurance_activa_name, insurance_activa_date, insurance_activa_exp_date, insurance_id, insurance_activa_description")] asset_insuranceViewModel asset_ins)
        {
            if (asset_ins.insurance_activa_date > DateTime.Today)
                ModelState.AddModelError("insurance_activa_date", "Please enter a valid date.");

            if (asset_ins.insurance_activa_date > asset_ins.insurance_activa_exp_date)
                ModelState.AddModelError("insurance_activa_exp_date", "Insurance activa expired date must be after insurance activa date.");

            if (ModelState.IsValid && asset_ins.insurance_activa_id > 0)
            {
                tr_asset_insurance ass_insurance = db.tr_asset_insurance.Find(asset_ins.insurance_activa_id);
                ass_insurance.asset_id = asset_ins.asset_parent_id;
                ass_insurance.insurance_activa_number = asset_ins.insurance_activa_number;
                ass_insurance.insurance_activa_name = asset_ins.insurance_activa_name;
                ass_insurance.insurance_activa_date = asset_ins.insurance_activa_date;
                ass_insurance.insurance_activa_exp_date = asset_ins.insurance_activa_exp_date;
                ass_insurance.insurance_id = asset_ins.insurance_id;
                ass_insurance.insurance_activa_description = asset_ins.insurance_activa_description;

                ass_insurance.fl_active = true;
                ass_insurance.updated_date = DateTime.Now;
                ass_insurance.updated_by = UserProfile.UserId;
                ass_insurance.deleted_date = null;
                ass_insurance.deleted_int = null;
                ass_insurance.org_id = UserProfile.OrgId;

                db.Entry(ass_insurance).State = EntityState.Modified;
                db.SaveChanges();

                return RedirectToAction("Index");
            }

            tr_asset_registration ass_reg = db.tr_asset_registration.Find(asset_ins.asset_parent_id);
            asset_ins.FormMode = EnumFormModeKey.Form_Edit;

            asset_ins.asset_parent_id = (int)ass_reg.asset_id;
            asset_ins.asset_parent = ass_reg;

            asset_ins.insurance_list = db.ms_insurance.Where(r => r.fl_active == true && r.deleted_date == null).ToList();

            //Data view edit
            asset_ins.detail_insurance_list = (from aw in db.tr_asset_insurance
                                               where (aw.fl_active == true && aw.deleted_date == null && aw.asset_id == asset_ins.asset_parent_id)

                                               join a in db.ms_insurance on aw.insurance_id equals a.insurance_id
                                               where (a.fl_active == true && a.deleted_date == null)

                                               select new asset_insurancedetailViewModel()
                                               {
                                                   insurance_activa_id = aw.insurance_activa_id,
                                                   insurance_activa_number = aw.insurance_activa_number,
                                                   insurance_activa_name = aw.insurance_activa_name,
                                                   insurance_activa_date = aw.insurance_activa_date,
                                                   insurance_activa_exp_date = aw.insurance_activa_exp_date,
                                                   insurance_id = a.insurance_id,
                                                   insurance_name = a.insurance_name,
                                                   insurance_activa_description = aw.insurance_activa_description
                                               }).ToList<asset_insurancedetailViewModel>();

            return View(asset_ins);
        }
        public ActionResult DisposalFollowup([Bind(Include = "announcement_id, request_id, remove_asset_description, asset_id, asset_number, asset_name, location_name, department_name")] disposalViewModel disposal_prs)
        {
            //update disposal request and approval data with transaction
            if (ModelState.IsValid)
            {
                using (var transaction = db.Database.BeginTransaction())
                {
                    try
                    {
                        #region "Save update Disposal Announcement"
                        tr_disposal_announcement disposal_announcement = db.tr_disposal_announcement.Find(disposal_prs.announcement_id);

                        disposal_announcement.remove_asset_description = disposal_prs.remove_asset_description;
                        disposal_announcement.remove_asset_date        = DateTime.Now;
                        disposal_announcement.remove_asset_emp_id      = UserProfile.employee_id;

                        disposal_announcement.updated_date = DateTime.Now;
                        disposal_announcement.updated_by   = UserProfile.UserId;
                        disposal_announcement.deleted_date = null;
                        disposal_announcement.deleted_by   = null;

                        db.Entry(disposal_announcement).State = EntityState.Modified;
                        db.SaveChanges();
                        #endregion

                        tr_asset_registration asset_registration = db.tr_asset_registration.Find(disposal_prs.asset_id);
                        asset_registration.fl_active       = false;
                        db.Entry(asset_registration).State = EntityState.Modified;
                        db.SaveChanges();

                        #region "kirim email ke All PIC"
                        string emailsetting   = string.Empty;
                        string emailsettingcc = string.Empty;

                        var _emailapproval = (from app in db.tr_disposal_approval
                                              where app.request_id == disposal_prs.request_id && app.fl_active == true && app.deleted_date == null

                                              join a in db.ms_employee on app.approval_employee_id equals a.employee_id
                                              where a.fl_active == true && a.deleted_date == null

                                              select a).ToList <ms_employee>();

                        foreach (ms_employee employee_app in _emailapproval)
                        {
                            emailsettingcc += employee_app.employee_email + ";";
                        }

                        var _emailowner_asset = (from app in db.tr_asset_registration
                                                 where app.asset_id == disposal_prs.asset_id /*&& app.fl_active == true && app.deleted_date == null*/

                                                 join a in db.ms_employee on app.employee_id equals a.employee_id
                                                 where a.fl_active == true && a.deleted_date == null

                                                 select a).ToList <ms_employee>();
                        foreach (ms_employee employee_app in _emailowner_asset)
                        {
                            emailsetting += employee_app.employee_email + ";";
                        }

                        var _emailpic_asset = (from app in db.tr_disposal_request
                                               where app.request_id == disposal_prs.request_id && app.fl_active == true && app.deleted_date == null

                                               join a in db.ms_employee on app.request_emp_id equals a.employee_id
                                               where a.fl_active == true && a.deleted_date == null

                                               select a).ToList <ms_employee>();
                        foreach (ms_employee employee_app in _emailpic_asset)
                        {
                            emailsetting += employee_app.employee_email + ";";
                        }

                        var _email_announcement = (from app in db.tr_disposal_announcement
                                                   where app.announcement_id == disposal_prs.announcement_id && app.fl_active == true && app.deleted_date == null

                                                   join a in db.ms_employee on app.announcement_emp_id equals a.employee_id
                                                   where a.fl_active == true && a.deleted_date == null

                                                   select a).ToList <ms_employee>();
                        foreach (ms_employee employee_app in _email_announcement)
                        {
                            emailsetting += employee_app.employee_email + ";";
                        }

                        var _email_fin_announcement = (from app in db.tr_disposal_announcement
                                                       where app.announcement_id == disposal_prs.announcement_id && app.fl_active == true && app.deleted_date == null

                                                       join a in db.ms_employee on app.fin_announcement_emp_id equals a.employee_id
                                                       where a.fl_active == true && a.deleted_date == null

                                                       select a).ToList <ms_employee>();
                        foreach (ms_employee employee_app in _email_fin_announcement)
                        {
                            emailsetting += employee_app.employee_email + ";";
                        }

                        sy_email_log sy_email_log = new sy_email_log();
                        sy_email_log.elog_to       = emailsetting;
                        sy_email_log.elog_cc       = emailsettingcc;
                        sy_email_log.elog_subject  = string.Format("Disposal Asset");
                        sy_email_log.elog_template = "EMAIL_TEMPLATE_06";

                        #region "body mail"
                        var    _bodymail   = app_setting.APPLICATION_SETTING.Where(c => c.app_key.Contains("EMAIL_TEMPLATE_06"));
                        string strBodyMail = _bodymail.FirstOrDefault().app_value;
                        strBodyMail = strBodyMail.Replace("[to]", "");
                        strBodyMail = strBodyMail.Replace("[assetnumber]", disposal_prs.asset_number);
                        strBodyMail = strBodyMail.Replace("[aseetname]", disposal_prs.asset_name);
                        strBodyMail = strBodyMail.Replace("[assetlocation]", disposal_prs.location_name);
                        strBodyMail = strBodyMail.Replace("[department]", disposal_prs.department_name);

                        string linkapp = string.Format("{0}://{1}{2}", Request.Url.Scheme, Request.Url.Authority, Url.Content("~/Account/Login?ReturnUrl=%2f"));
                        string strImg  = string.Format("http://{0}/Content/EmailImage/button_asmin.png", Request.Url.Authority);
                        linkapp     = string.Format(@"<a href={0}><img src=""{1}"" alt=""click for process""/></a>", linkapp, strImg);
                        strBodyMail = strBodyMail.Replace("[link]", linkapp);

                        ms_disposal_type suggestion = db.ms_disposal_type.Find(disposal_announcement.approval_disposal_type_id);
                        strBodyMail            = strBodyMail.Replace("[suggestion]", suggestion.disposal_type_name);
                        sy_email_log.elog_body = strBodyMail;
                        #endregion

                        var EmailHelper = new EmailHelper()
                        {
                            ToAddress      = sy_email_log.elog_to,
                            CcAddress      = sy_email_log.elog_cc,
                            Email_Template = sy_email_log.elog_template,
                            MailSubject    = sy_email_log.elog_subject,
                            MailBody       = sy_email_log.elog_body
                        };
                        EmailHelper.Send();
                        #endregion

                        transaction.Commit();
                        ViewBag.ResultMessage = "Update table successfully.";
                        return(RedirectToAction("Index"));
                    }
                    catch (Exception)
                    {
                        // roll back all database operations, if any thing goes wrong
                        transaction.Rollback();
                        ViewBag.ResultMessage = "Error occured, records rolledback.";
                    }
                }
            }
            return(View(disposal_prs));
        }
        public ActionResult Approval([Bind(Include = "request_id, approval_id, fl_approval, approval_suggestion_id, approval_noted, asset_number,asset_name, location_name, department_name, fl_SuggestionChanges")] disposalViewModel disposal_req)
        {
            if (disposal_req.fl_approval != null)
            {
                if (disposal_req.fl_approval == true)
                {
                    if (disposal_req.approval_suggestion_id == null || disposal_req.approval_suggestion_id == 0)
                    {
                        ModelState.AddModelError("approval_suggestion_id", "Suggestion is Mandatory.");
                    }
                }
            }
            else if (disposal_req.approval_noted == null || disposal_req.approval_noted.Trim() == string.Empty)
            {
                ModelState.AddModelError("fl_approval", "Approval is Mandatory.");
                ModelState.AddModelError("approval_noted", "Reject Reason is Mandatory.");
            }

            //update disposal request and approval data with transaction
            if (ModelState.IsValid)
            {
                using (var transaction = db.Database.BeginTransaction())
                {
                    try
                    {
                        bool iscomplete = false;
                        #region "Save update Request Disposal"
                        tr_disposal_request disposal_request = db.tr_disposal_request.Find(disposal_req.request_id);
                        var doneapp = (from app in db.tr_disposal_approval
                                       where (app.approval_date == null && app.fl_active == true &&
                                              app.deleted_date == null && app.request_id == disposal_req.request_id)
                                       select app).ToList();

                        if (disposal_req.fl_SuggestionChanges == false)
                        {
                            disposal_request.fl_approval = disposal_req.fl_approval;
                            if (disposal_req.fl_approval == true)
                            {
                                if (doneapp.Count == 1)
                                {
                                    disposal_request.request_status_id = 5;//complete
                                    iscomplete = true;
                                }
                                else
                                {
                                    disposal_request.request_status_id = 2;//approve
                                }
                            }
                            else
                            {
                                disposal_request.request_status_id = 3; //reject
                            }

                            disposal_request.approval_date = DateTime.Now;
                            disposal_request.updated_date  = DateTime.Now;
                            disposal_request.update_by     = UserProfile.UserId;
                            disposal_request.deleted_date  = null;
                            disposal_request.deleted_by    = null;

                            db.Entry(disposal_request).State = EntityState.Modified;
                            db.SaveChanges();
                        }
                        #endregion

                        #region "Save update Approval Disposal"
                        tr_disposal_approval disposal_approval = db.tr_disposal_approval.Find(disposal_req.approval_id);

                        if (disposal_req.fl_approval == true)
                        {
                            disposal_approval.approval_status_id     = 2;//approve
                            disposal_approval.approval_suggestion_id = disposal_req.approval_suggestion_id;
                        }
                        else
                        {
                            disposal_approval.approval_status_id = 3; //reject
                            disposal_approval.approval_noted     = disposal_req.approval_noted;
                            disposal_approval.fl_active          = false;

                            //kembalikan status announcement ke suggestion terakhir
                            tr_disposal_announcement disposal_ann_old = (from tda in db.tr_disposal_announcement
                                                                         where tda.request_id == disposal_approval.request_id && tda.fl_suggestion_changes == true
                                                                         select tda).FirstOrDefault();
                            disposal_ann_old.fl_suggestion_changes = false;
                            disposal_ann_old.fl_active             = true;
                            disposal_ann_old.updated_date          = DateTime.Now;
                            disposal_ann_old.updated_by            = UserProfile.UserId;
                            db.Entry(disposal_ann_old).State       = EntityState.Modified;
                            db.SaveChanges();
                        }
                        disposal_approval.approval_date        = DateTime.Now;
                        disposal_approval.approval_location_id = UserProfile.asset_reg_location_id;
                        disposal_approval.updated_date         = DateTime.Now;
                        disposal_approval.updated_by           = UserProfile.UserId;
                        disposal_approval.deleted_date         = null;
                        disposal_approval.deteled_by           = null;

                        db.Entry(disposal_approval).State = EntityState.Modified;
                        db.SaveChanges();
                        #endregion

                        if (disposal_req.fl_approval == true)
                        {
                            //cek untuk disposal changes: site atau ho
                            tr_asset_registration assetreg = db.tr_asset_registration.Find(disposal_request.asset_id);

                            if (doneapp.Count == 1)
                            {
                                iscomplete = true;
                            }

                            if (!iscomplete && ((assetreg.location_id != 1 && disposal_req.fl_SuggestionChanges == true) || (disposal_req.fl_SuggestionChanges == false)))
                            {
                                #region "kirim email ke approval"

                                var next_approval = (from app in db.tr_disposal_approval
                                                     where (app.approval_date == null && app.fl_active == true && app.deleted_date == null) &&
                                                     app.request_id == disposal_req.request_id
                                                     orderby app.approval_id ascending

                                                     join a in db.ms_employee on app.approval_employee_id equals a.employee_id
                                                     where a.fl_active == true && a.deleted_date == null

                                                     join b in db.ms_user on a.employee_id equals b.employee_id
                                                     where b.fl_active == true && b.deleted_date == null

                                                     select new disposalViewModel
                                {
                                    approval_id = app.approval_id,
                                    ms_employee = a,
                                    ms_user = b
                                }).FirstOrDefault <disposalViewModel>();

                                if (next_approval != null)
                                {
                                    sy_email_log sy_email_log = new sy_email_log();
                                    sy_email_log.elog_to       = next_approval.ms_employee.employee_email;
                                    sy_email_log.elog_subject  = string.Format("Asset Disposal Need Approval");
                                    sy_email_log.elog_template = "EMAIL_TEMPLATE_04";

                                    #region "body mail"
                                    var    _bodymail   = app_setting.APPLICATION_SETTING.Where(c => c.app_key.Contains("EMAIL_TEMPLATE_04"));
                                    string strBodyMail = _bodymail.FirstOrDefault().app_value;
                                    strBodyMail = strBodyMail.Replace("[to]", next_approval.ms_employee.employee_name);
                                    strBodyMail = strBodyMail.Replace("[action]", "Dispose");
                                    strBodyMail = strBodyMail.Replace("[assetnumber]", disposal_req.asset_number);
                                    strBodyMail = strBodyMail.Replace("[aseetname]", disposal_req.asset_name);
                                    strBodyMail = strBodyMail.Replace("[assetlocation]", disposal_req.location_name);
                                    strBodyMail = strBodyMail.Replace("[department]", disposal_req.department_name);

                                    //token untuk link approval di email
                                    string token = string.Format("DisposalApproval|Approval/{0}|{1}|{2}|{3}", next_approval.approval_id, next_approval.ms_user.user_name, UserProfile.company_id, UserProfile.asset_reg_location_id);
                                    token = CryptorHelper.Encrypt(token, "MD5", true).Replace("+", "plus").Replace("=", "equal");
                                    string linkapp = string.Format("{0}://{1}{2}", Request.Url.Scheme, Request.Url.Authority, Url.Content("~/Account/Login?ReturnUrl=%2f&token=" + token));
                                    string strImg  = string.Format("http://{0}/Content/EmailImage/button_approval_disposal.png", Request.Url.Authority);

                                    linkapp = string.Format(@"<a href={0}><img src=""{1}"" alt=""click for approval""/></a>", linkapp, strImg);

                                    strBodyMail = strBodyMail.Replace("[link]", linkapp);

                                    sy_email_log.elog_body = strBodyMail;
                                    #endregion

                                    var EmailHelper = new EmailHelper()
                                    {
                                        ToAddress      = sy_email_log.elog_to,
                                        Email_Template = sy_email_log.elog_template,
                                        MailSubject    = sy_email_log.elog_subject,
                                        MailBody       = sy_email_log.elog_body
                                    };
                                    EmailHelper.Send();
                                }
                                #endregion

                                #region "Save Sy_Message_notification ke approval"

                                sy_message_notification msg = new sy_message_notification();
                                msg.notif_group    = "BALOON_RECEIPT_04";
                                msg.notify_user    = next_approval.ms_user.user_name;
                                msg.notify_ip      = next_approval.ms_employee.ip_address;
                                msg.notify_message = "Ada permintaan approval untuk Asset disposal.";
                                msg.fl_active      = true;
                                msg.created_date   = DateTime.Now;
                                msg.created_by     = UserProfile.UserId;
                                msg.fl_shown       = 0;

                                db.sy_message_notification.Add(msg);
                                db.SaveChanges();
                                #endregion
                            }
                            else
                            {
                                #region "Save Update Process Disposal"
                                ms_disposal_type suggestion = db.ms_disposal_type.Find(disposal_req.approval_suggestion_id);

                                tr_disposal_announcement disposalproses = new tr_disposal_announcement();
                                disposalproses.request_id = disposal_req.request_id;
                                disposalproses.approval_disposal_type_id = disposal_req.approval_suggestion_id;
                                if (disposal_req.approval_suggestion_id != 3)
                                {
                                    disposalproses.fl_announcement_status = true;
                                }
                                else
                                {
                                    disposalproses.fl_remove_asset      = true;
                                    disposalproses.remove_asset_dept_id = 5;
                                }
                                disposalproses.fl_active    = true;
                                disposalproses.created_date = DateTime.Now;
                                disposalproses.created_by   = UserProfile.UserId;
                                disposalproses.updated_date = DateTime.Now;
                                disposalproses.updated_by   = UserProfile.UserId;
                                disposalproses.deleted_date = null;
                                disposalproses.deleted_by   = null;
                                disposalproses.org_id       = UserProfile.OrgId;
                                disposalproses = db.tr_disposal_announcement.Add(disposalproses);
                                db.SaveChanges();
                                #endregion

                                #region "kirim email ke PIC Process Disposal"
                                string emailsetting = string.Empty;
                                string to_name      = string.Empty;


                                switch (disposal_req.approval_suggestion_id)
                                {
                                //resale => procurement
                                case 1:
                                    emailsetting = "EMAIL_TO_DISPOSAL_PROCUREMENT";
                                    to_name      = "Department Procurement";
                                    break;

                                //donation => CSR
                                case 2:
                                    emailsetting = "EMAIL_TO_DISPOSAL_CSR";
                                    to_name      = "Department CSR";
                                    break;

                                //destroy => Acounting
                                case 3:
                                    emailsetting = "EMAIL_TO_DISPOSAL_ACCOUNTING";
                                    to_name      = "Department Accounting";
                                    break;
                                }
                                var _emailto = app_setting.APPLICATION_SETTING.Where(c => c.app_key.Contains(emailsetting));

                                sy_email_log sy_email_log = new sy_email_log();
                                sy_email_log.elog_to       = _emailto.FirstOrDefault().app_value;
                                sy_email_log.elog_subject  = string.Format("Asset Disposal Need Follow Up ({0})", suggestion.disposal_type_name);
                                sy_email_log.elog_template = "EMAIL_TEMPLATE_05";

                                #region "body mail"
                                var    _bodymail   = app_setting.APPLICATION_SETTING.Where(c => c.app_key.Contains("EMAIL_TEMPLATE_05"));
                                string strBodyMail = _bodymail.FirstOrDefault().app_value;
                                strBodyMail = strBodyMail.Replace("[to]", to_name);
                                strBodyMail = strBodyMail.Replace("[assetnumber]", disposal_req.asset_number);
                                strBodyMail = strBodyMail.Replace("[aseetname]", disposal_req.asset_name);
                                strBodyMail = strBodyMail.Replace("[assetlocation]", disposal_req.location_name);
                                strBodyMail = strBodyMail.Replace("[department]", disposal_req.department_name);
                                strBodyMail = strBodyMail.Replace("[suggestion]", suggestion.disposal_type_name);
                                strBodyMail = strBodyMail.Replace("[freetext]", "");

                                string linkapp = string.Format("{0}://{1}{2}", Request.Url.Scheme, Request.Url.Authority, Url.Content("~/Account/Login?ReturnUrl=%2f"));
                                string strImg  = string.Format("http://{0}/Content/EmailImage/button_asmin.png", Request.Url.Authority);
                                linkapp     = string.Format(@"<a href={0}><img src=""{1}"" alt=""click for process""/></a>", linkapp, strImg);
                                strBodyMail = strBodyMail.Replace("[link]", linkapp);

                                sy_email_log.elog_body = strBodyMail;
                                #endregion

                                var EmailHelper = new EmailHelper()
                                {
                                    ToAddress      = sy_email_log.elog_to,
                                    Email_Template = sy_email_log.elog_template,
                                    MailSubject    = sy_email_log.elog_subject,
                                    MailBody       = sy_email_log.elog_body
                                };
                                EmailHelper.Send();
                                #endregion
                            }
                        }
                        transaction.Commit();
                        ViewBag.ResultMessage = "Update table successfully.";
                        return(RedirectToAction("Index"));
                    }
                    catch (Exception)
                    {
                        // roll back all database operations, if any thing goes wrong
                        transaction.Rollback();
                        ViewBag.ResultMessage = "Error occured, records rolledback.";
                    }
                }
            }
            disposal_req = DataDisposalView(disposal_req.request_id, disposal_req);
            return(View(disposal_req));
        }
Beispiel #20
0
        public ActionResult SubmitReceiveMutation([Bind(Include = "mutation_id, asset_id, request_id, fl_pic_asset_receive, courier_description, asset_number, asset_name, transfer_to_dept_id, transfer_to_emp_id, transfer_to_location_id")] AssetMutationViewModel mutation_rcv)
        {
            tr_mutation_process mut_process = db.tr_mutation_process.Find(mutation_rcv.mutation_id);

            //update disposal request and approval data with transaction
            if (mutation_rcv.fl_pic_asset_receive == null)
            {
                ModelState.AddModelError("fl_pic_asset_receive", "Confirmation of receive asset is mandatory.");
            }
            else if (string.IsNullOrEmpty(mutation_rcv.courier_description))
            {
                ModelState.AddModelError("courier_description", "Feedback is mandatory.");
            }

            if (ModelState.IsValid)
            {
                using (var transaction = db.Database.BeginTransaction())
                {
                    try
                    {
                        #region "Save update Mutation process"

                        if (mutation_rcv.fl_pic_asset_receive == null)
                        {
                            mut_process.fl_pic_asset_receive = false;
                        }
                        else if (mutation_rcv.fl_pic_asset_receive == true)
                        {
                            //ms_employee_detail ed = db.ms_employee_detail.Find(UserProfile.employee_id);
                            mut_process.fl_pic_asset_receive           = true;
                            mut_process.pic_asset_received_date        = DateTime.Now;
                            mut_process.courier_description            = mutation_rcv.courier_description;
                            mut_process.pic_asset_received_employee_id = UserProfile.employee_id;
                            //mut_process.pic_asset_level_id = UserProfile.
                            mut_process.user_asset_received_date        = DateTime.Now;
                            mut_process.user_asset_received_employee_id = mutation_rcv.transfer_to_emp_id;

                            tr_mutation_request   mr = db.tr_mutation_request.Find(mutation_rcv.request_id);
                            tr_asset_registration ar = db.tr_asset_registration.Find(mr.asset_id);

                            ar.current_department_id = mr.transfer_to_dept_id;
                            ar.current_employee_id   = mr.transfer_to_emp_id;
                            ar.current_location_id   = mr.transfer_to_location_id;

                            db.Entry(ar).State = EntityState.Modified;
                            db.SaveChanges();
                        }

                        mut_process.updated_date = DateTime.Now;
                        mut_process.updated_by   = UserProfile.UserId;
                        mut_process.deleted_date = null;
                        mut_process.deleted_by   = null;

                        db.Entry(mut_process).State = EntityState.Modified;
                        db.SaveChanges();
                        #endregion


                        #region "kirim email ke PIC Process Mutation"
                        //string emailsetting = string.Empty;
                        //string to_name = string.Empty;
                        //string freetext = string.Empty;

                        //ms_department depTransfer = db.ms_department.Find(mutation_rcv.transfer_to_dept_id);

                        //emailsetting = "EMAIL_TEMPLATE_03";
                        //to_name = "Department " + depTransfer.department_name;
                        //freetext = "PIC Asset Department telah mengirim <strong>" + mutation_rcv.asset_name + "(" + mutation_rcv.asset_number + ")</strong>.";

                        //var _emailto = app_setting.APPLICATION_SETTING.Where(c => c.app_key.Contains(emailsetting));

                        //sy_email_log sy_email_log = new sy_email_log();
                        //sy_email_log.elog_to = _emailto.FirstOrDefault().app_value;
                        //sy_email_log.elog_subject = string.Format("Asset Mutation Ready to Process");
                        //sy_email_log.elog_template = "EMAIL_TEMPLATE_03";

                        //#region "body mail"
                        //var _bodymail = app_setting.APPLICATION_SETTING.Where(c => c.app_key.Contains("EMAIL_TEMPLATE_03"));
                        //string strBodyMail = _bodymail.FirstOrDefault().app_value;
                        //strBodyMail = strBodyMail.Replace("[to]", to_name);
                        //strBodyMail = strBodyMail.Replace("[assetnumber]", mutation_rcv.asset_number);
                        //strBodyMail = strBodyMail.Replace("[aseetname]", mutation_rcv.asset_name);
                        //strBodyMail = strBodyMail.Replace("[assetlocation]", mutation_rcv.location_name);
                        //strBodyMail = strBodyMail.Replace("[department]", disposal_prs.department_name);
                        //strBodyMail = strBodyMail.Replace("[suggestion]", "Resale");
                        //strBodyMail = strBodyMail.Replace("[freetext]", freetext);
                        ////strBodyMail = strBodyMail.Replace("[link]", "");
                        //sy_email_log.elog_body = strBodyMail;
                        //#endregion

                        //var EmailHelper = new EmailHelper()
                        //{
                        //    ToAddress = sy_email_log.elog_to,
                        //    Email_Template = sy_email_log.elog_template,
                        //    MailSubject = sy_email_log.elog_subject,
                        //    MailBody = sy_email_log.elog_body
                        //};
                        //EmailHelper.Send();
                        #endregion

                        transaction.Commit();
                        ViewBag.ResultMessage = "Update table successfully.";
                        return(RedirectToAction("Index"));
                    }
                    catch (Exception)
                    {
                        // roll back all database operations, if any thing goes wrong
                        transaction.Rollback();
                        ViewBag.ResultMessage = "Error occured, records rolledback.";
                    }
                }
            }
            mutation_rcv = DataMutationView(mutation_rcv.request_id, mutation_rcv);
            return(View(mutation_rcv));
        }