//[ValidateAntiForgeryToken]
        //public ActionResult UpdateThongTinChung(TD_HoSoDuAn tD_HoSoDuAn, List<TD_FileHoSoDinhKem> listFile, HttpPostedFileBase upload_0, HttpPostedFileBase upload_1, HttpPostedFileBase upload_2)
        public ActionResult UpdateThongTinChung(TD_HoSoDuAn tD_HoSoDuAn, List<TD_FileHoSoDinhKem> listFile, List<HttpPostedFileBase> listFileUp)
        {
            var user = S4T_HaTinhBase.GetUserSession();
            if (user == null)
                return RedirectToAction("Login", "Account", new { returnUrl = Request.Url.PathAndQuery });

            // Kiểm tra quyền truy cập và cập nhật
            var per = CheckPermission(user);
            if (!per.isEdit)
                return Content("Bạn không có quyền thực hiện chức năng này");

            var obj = db.TD_HoSoDuAn.FirstOrDefault(o => o.HoSoDuAn_ID == tD_HoSoDuAn.HoSoDuAn_ID);
            ModelState.Remove("TenDuAn");
            if (ModelState.IsValid)
            {
                using (TransactionScope scope = new TransactionScope())
                {
                    try
                    {
                        // Mapping obj in db
                        obj.str1 = tD_HoSoDuAn.str1;
                        obj.NhaThau = tD_HoSoDuAn.NhaThau;
                        obj.MucTieu = obj.MucTieu;
                        obj.QuyMo = tD_HoSoDuAn.QuyMo;
                        obj.DiaDiem = tD_HoSoDuAn.DiaDiem;
                        obj.NguonVon = tD_HoSoDuAn.NguonVon;
                        obj.HinhThucQuanLy_ID = tD_HoSoDuAn.HinhThucQuanLy_ID;
                        obj.HinhThucQuanLyKhac = tD_HoSoDuAn.HinhThucQuanLyKhac;
                        obj.int1 = tD_HoSoDuAn.int1;
                        obj.int2 = tD_HoSoDuAn.int2;
                        obj.QuyTrinhQuanLy = tD_HoSoDuAn.QuyTrinhQuanLy;
                        obj.NhomDuAn_ID = tD_HoSoDuAn.NhomDuAn_ID;
                        obj.LoaiDuAn_ID = tD_HoSoDuAn.LoaiDuAn_ID;
                        obj.TinhChatDuAn_ID = tD_HoSoDuAn.TinhChatDuAn_ID;
                        obj.TinhTrangThucHien = tD_HoSoDuAn.TinhTrangThucHien;
                        obj.TongMucDauTu = tD_HoSoDuAn.TongMucDauTu;
                        obj.ChiPhiXayLap = tD_HoSoDuAn.ChiPhiXayLap;
                        obj.ChiPhiThietBi = tD_HoSoDuAn.ChiPhiThietBi;
                        obj.ChiPhiQuanLy = tD_HoSoDuAn.ChiPhiQuanLy;
                        obj.ChiPhiTuVan = tD_HoSoDuAn.ChiPhiTuVan;
                        obj.ChiPhiKhac = tD_HoSoDuAn.ChiPhiKhac;
                        obj.ChiPhiDuPhong = tD_HoSoDuAn.ChiPhiDuPhong;
                        obj.NganSachTrungUong = tD_HoSoDuAn.NganSachTrungUong;
                        obj.NganSachTinh = tD_HoSoDuAn.NganSachTinh;
                        obj.NganSachDonVi = tD_HoSoDuAn.NganSachDonVi;
                        obj.NguonKhac = tD_HoSoDuAn.NguonKhac;
                        obj.HangMucTrienKhai = tD_HoSoDuAn.HangMucTrienKhai;
                        obj.ThoiGianHoanThanh = tD_HoSoDuAn.ThoiGianHoanThanh;
                        obj.SanPhamHangMuc = tD_HoSoDuAn.SanPhamHangMuc;
                        obj.KinhPhiThucHienHangMuc = tD_HoSoDuAn.KinhPhiThucHienHangMuc;
                        obj.KetQuaDauTu = tD_HoSoDuAn.KetQuaDauTu;

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

                        // Lưu file vào hệ thống
                        List<TD_FileHoSoDinhKem> list = (List<TD_FileHoSoDinhKem>)TempData["TD_FileHoSoDinhKem_" + user.Id];
                        if (list.Any())
                        {
                            TempData["TD_FileHoSoDinhKem_" + user.Id] = list;
                            string duongDanVatLy = pathSource + "/TD_HoSoDuAn";
                            string phuLucHoSoKhac = ConfigurationManager.AppSettings["PhuLucHoSoKhac"];
                            int intPhuLucHoSoKhac = string.IsNullOrEmpty(phuLucHoSoKhac) ? 0 : Convert.ToInt32(phuLucHoSoKhac);
                            if (!Directory.Exists(duongDanVatLy))
                                Directory.CreateDirectory(duongDanVatLy);

                            var listFileInDb = db.TD_FileHoSoDinhKem.Where(o => o.TrangThai == TrangThai.HoatDong && o.MaHoSo == obj.MaHoSo && o.VanBan_ID == intPhuLucHoSoKhac);

                            for (var i = 0; i < list.Count; i++)
                            {
                                // Insert
                                if (list[i].FileHoSoDinhKem_ID == 0)
                                {
                                    string path = Path.Combine(duongDanVatLy, list[i].TenFile);

                                    // To copy a file to another location and 
                                    // overwrite the destination file if it already exists.
                                    System.IO.File.Copy(list[i].DuongDan, path, true);

                                    // đổi đường dẫn file
                                    list[i].DuongDan = path;

                                    // Lưu obj file vào db
                                    db.TD_FileHoSoDinhKem.Add(list[i]);
                                    db.SaveChanges();
                                }
                                //Update
                                else
                                {

                                }
                            }
                        }

                        // Lưu các file quyết định phê duyệt (nếu có đính kèm)
                        if(Request.Files.Count > 0)
                        {
                            if (string.IsNullOrEmpty(pathSource)) return Content("Không tìm thấy đường dẫn file");

                            //var duongDan = pathSource + "/TD_HoSoDuAn/NewUpload/" + User.Identity.GetUserId();
                            //if (!Directory.Exists(duongDan))
                            //    Directory.CreateDirectory(duongDan);

                            var duongDanVatLy = pathSource + "/TD_HoSoDuAn";
                            if (!Directory.Exists(duongDanVatLy))
                                Directory.CreateDirectory(duongDanVatLy);
                            
                            var indexFile = 0;
                            var stt = db.TD_FileHoSoDinhKem.Where(o => o.TrangThai == TrangThai.HoatDong && o.MaHoSo == tD_HoSoDuAn.MaHoSo).Max(o => o.STT);
                            if (stt == null || stt == 0)
                                stt = 1;

                            for (int i = 0; i < Request.Files.Count; i++)
                            {
                                var file = Request.Files[i];
                                if (file.ContentLength > 0)
                                {
                                    // Tạo tên file lưu trên hệ thống
                                    var fileName = tD_HoSoDuAn.HoSoDuAn_ID + "_" + tD_HoSoDuAn.LoaiDuAn_ID + "_" + Guid.NewGuid().ToString() + "_" + Path.GetFileName(file.FileName);

                                    // Lưu file lên hệ thống
                                    var path = Path.Combine(duongDanVatLy, fileName);
                                    file.SaveAs(path);

                                    // Tạo object TD_FileHoSoDinhKem                                    
                                    var objFileDinhKem = new TD_FileHoSoDinhKem
                                    {
                                        DuongDan = path,
                                        SoKyHieu = listFile[indexFile].SoKyHieu,
                                        MaHoSo = tD_HoSoDuAn.MaHoSo,
                                        STT = stt,
                                        TenFile = fileName,
                                        TenHienThi = Path.GetFileName(file.FileName),
                                        TrichYeu = listFile[indexFile].TrichYeu,
                                        VanBan_ID = listFile[indexFile].VanBan_ID,
                                        TrangThai = TrangThai.HoatDong
                                    };

                                    // Lưu thông tin file vào db
                                    db.TD_FileHoSoDinhKem.Add(objFileDinhKem);
                                    stt++; // Cộng số thứ tự file thêm 1 nếu đã lưu 1 file thành công
                                }
                                indexFile++;
                            }
                        }

                        db.SaveChanges();
                        scope.Complete();

                        // Xóa file đã đính kèm trước đó đi trong thư mục
                        if (Directory.Exists(pathSource + "/TD_HoSoDuAn/Upload/" + User.Identity.GetUserId()))
                        {
                            string[] filesPath = Directory.GetFiles(pathSource + "/TD_HoSoDuAn/Upload/" + User.Identity.GetUserId());
                            if (filesPath.Length > 0)
                            {
                                foreach (string item in filesPath)
                                {
                                    if (!string.IsNullOrEmpty(item))
                                        System.IO.File.Delete(item);
                                }
                            }
                        }

                        return RedirectToAction("ThongTinChung");
                    }
                    catch (DbEntityValidationException ex)
                    {
                        scope.Dispose();
                        var exc = new ExceptionViewer();
                        exc.GetError(ex);
                    }
                }
            }
            GetModelStateError(ViewData);
            ViewBag.TenDuAn = obj.TenDuAn;
            ViewBag.ChuDauTu = obj.ChuDauTu;
            var listVBQuyetDinh = db.View_Loai_Nhom_VanBan.Where(o => o.TrangThai == TrangThai.HoatDong && o.MaNhomVanBan == "QuyetDinhPheDuyet");
            ViewBag.ListVBQuyetDinh = listVBQuyetDinh.Any() ? listVBQuyetDinh.ToList() : new List<View_Loai_Nhom_VanBan>();
            var _listFile = db.TD_FileHoSoDinhKem.Where(o => o.TrangThai == TrangThai.HoatDong && o.MaHoSo == tD_HoSoDuAn.MaHoSo);
            if (_listFile.Any())
                tD_HoSoDuAn.ListFile = _listFile.ToList();
            else
                tD_HoSoDuAn.ListFile = new List<TD_FileHoSoDinhKem>();
            GetViewBag(ViewReport.Edit);
            return View(tD_HoSoDuAn);
        }
        public ActionResult _CreateOrUpdateFile(int? id, string tenFile, string maHoSo, int? vanBan_ID)
        {
            ViewBag.HideMenu = true;
            var user = S4T_HaTinhBase.GetUserSession();
            if (user == null) return RedirectToAction("Login", "Account", new { returnUrl = Request.Url.PathAndQuery });
            var per = S4T_HaTinhBase.CheckPermission(Request.RequestContext.RouteData.GetRequiredString("controller"));
            if (per != PermissionType.Write) return Content(ExceptionViewer.GetMessage("UPDATE_NOT_PERMISSION"));

            TD_FileHoSoDinhKem obj = new TD_FileHoSoDinhKem
            {
                MaHoSo = maHoSo,
                VanBan_ID = (vanBan_ID == null || vanBan_ID == 0) ? 0 : vanBan_ID.Value
            };
            if ((id != null && id != 0) || !string.IsNullOrEmpty(tenFile))
            {
                List<TD_FileHoSoDinhKem> list = (List<TD_FileHoSoDinhKem>)TempData["TD_FileHoSoDinhKem_" + user.Id];
                TempData["TD_FileHoSoDinhKem_" + user.Id] = list;
                obj = list.FirstOrDefault(o => o.FileHoSoDinhKem_ID == id);
                if (obj == null)
                {
                    obj = list.FirstOrDefault(o => o.TenFile == tenFile);
                    if (obj == null)
                        return HttpNotFound();
                }
            }
            else
            {
                int phuLuc = string.IsNullOrEmpty(phuLucHoSoKhac) ? 0 : Convert.ToInt32(phuLucHoSoKhac);
                if (obj.VanBan_ID != phuLuc && string.IsNullOrEmpty(obj.TrichYeu))
                {
                    List<View_Loai_Nhom_VanBan> list = GetListVBQuyetDinhPheDuyet();
                    var objVB = list.FirstOrDefault(o => o.VanBan_ID == obj.VanBan_ID);
                    obj.TrichYeu = objVB == null ? "" : objVB.TenVanBan;
                }
            }

            return View(obj);
        }
        public ActionResult _CreateOrUpdateFile(TD_FileHoSoDinhKem obj)
        {
            var user = S4T_HaTinhBase.GetUserSession();
            if (user == null) return RedirectToAction("Login", "Account", new { returnUrl = Request.Url.PathAndQuery });
            var per = S4T_HaTinhBase.CheckPermission(Request.RequestContext.RouteData.GetRequiredString("controller"));
            if (per != PermissionType.Write) return Content(ExceptionViewer.GetMessage("UPDATE_NOT_PERMISSION"));

            List<TD_FileHoSoDinhKem> list = (List<TD_FileHoSoDinhKem>)TempData["TD_FileHoSoDinhKem_" + user.Id];
            if (list == null) list = new List<TD_FileHoSoDinhKem>();
            using (TransactionScope scope = new TransactionScope())
            {
                try
                {
                    if (Request.Files.Count > 0)
                    {
                        var file = Request.Files[0];
                        if (file.ContentLength > 0)
                        {
                            var maxSize = 16384 * 1024; // in Byte

                            // Kiểm tra giới hạn dung lượng file upload cho phép
                            if (file.ContentLength > maxSize)
                            {
                                ModelState.AddModelError("", "Dung lượng file vượt quá dung lượng cho phép tải lên");
                                return View(obj);
                            }

                            if (string.IsNullOrEmpty(pathSource)) return Content("Không tìm thấy đường dẫn file");

                            // Xóa file tạm trong db
                            if (!string.IsNullOrEmpty(obj.TenFile))
                            {
                                TD_FileHoSoDinhKem objRemove = list.FirstOrDefault(o => o.TenFile == obj.TenFile);
                                list.Remove(objRemove);
                                System.IO.File.Delete(objRemove.DuongDan);
                            }

                            // Lưu đường dẫn file theo mã hồ sơ
                            string duongDan = pathSource + "/TD_HoSoDuAn/Upload/" + User.Identity.GetUserId();
                            if (!Directory.Exists(duongDan)) Directory.CreateDirectory(duongDan);
                            string fileName = obj.MaHoSo + "_" + Guid.NewGuid().ToString() + "_" + User.Identity.GetUserId() + "_" + Path.GetFileName(file.FileName);

                            // Lưu file vào thư mục tạm của hệ thống
                            string path = Path.Combine(duongDan, fileName);
                            file.SaveAs(path);

                            #region Lưu đường dẫn, thông tin file vào db
                            obj.DuongDan = path;
                            obj.TenFile = fileName;
                            obj.TenHienThi = Path.GetFileName(file.FileName);
                            obj.TrangThai = TrangThai.HoatDong;
                            
                            if (obj.VanBan_ID == 0)
                            {
                                ViewBag.btnId = "btnRefreshListFile";
                                string phuLucHoSoKhac = ConfigurationManager.AppSettings["PhuLucHoSoKhac"];
                                obj.VanBan_ID = string.IsNullOrEmpty(phuLucHoSoKhac) ? 0 : Convert.ToInt32(phuLucHoSoKhac);
                            }
                            else
                            {
                                ViewBag.btnId = "btnRefreshListFileQuyetDinh";
                            }

                            list.Add(obj);

                            TempData["TD_FileHoSoDinhKem_" + user.Id] = list;

                            scope.Complete();
                            #endregion Lưu đường dẫn, thông tin file vào db
                        }
                        else
                        {
                            ViewBag.Mess = "<span style=\"color:red;\">Chưa chọn file</span>";
                            return View(obj);
                        }
                    }
                    else
                    {
                        ViewBag.Mess = "<span style=\"color:red;\">Chưa chọn file</span>";
                        return View(obj);
                    }

                    // Close popup và refresh form main
                    ViewBag.RefreshPage = true;
                }
                catch (DbEntityValidationException ex)
                {
                    var exc = new ExceptionViewer();
                    ViewBag.Mess = exc.GetError(ex);
                    scope.Dispose();
                }
            }

            return View(obj);
        }
 /// <summary>
 /// Lưu tên file cần up và số thứ tự vào TempData để chuyển sang View Up
 /// </summary>
 /// <param name="tenFile">tên file cần up</param>
 /// <param name="stt">số thứ tự</param>
 public ActionResult SaveTempData(string tenVanBan, int stt, string ghiChu, int? fileID)
 {
     var objFile = new TD_FileHoSoDinhKem();
     if (fileID != null)
     {
         var id = Convert.ToInt32(fileID);
         objFile = db.TD_FileHoSoDinhKem.FirstOrDefault(o => o.FileHoSoDinhKem_ID == id);
     }
     else
     {
         objFile.TenVanBan = tenVanBan;
         objFile.STT = stt;
         objFile.GhiChu = ghiChu;
     }
     TempData["FileDinhKem_" + User.Identity.GetUserId()] = objFile;
     return Json(new { msg = "ok" });
 }
        //[MultipleButton(Name = "action", Argument = "UploadFile")]
        public ActionResult Up(TD_FileHoSoDinhKem objFile)
        {
            var user = S4T_HaTinhBase.GetUserSession();
            if (user == null)
            {
                return RedirectToAction("Login", "Account", new { returnUrl = Request.Url.PathAndQuery });
            }
            else
            {
                // Kiểm tra đã submit file lên
                if (Request.Files.Count > 0)
                {
                    var file = Request.Files[0];
                    var pathSource = ConfigurationManager.AppSettings["FolderUploadPath"];
                    if (string.IsNullOrEmpty(pathSource)) return Content("Không tìm thấy đường dẫn file");
                    var duongDan = pathSource + "/TD_HoSoDuAn/NewUpload/" + User.Identity.GetUserId() + "/" + objFile.STT;

                    if (!Directory.Exists(duongDan))
                        Directory.CreateDirectory(duongDan);

                    // lấy tên file
                    var fileName = Path.GetFileName(file.FileName);

                    // Xóa file đã đính kèm trước đó đi trong thư mục
                    string[] filesPath = System.IO.Directory.GetFiles(duongDan);
                    if (filesPath.Length > 0)
                    {
                        foreach (string item in filesPath)
                        {
                            if (!string.IsNullOrEmpty(item))
                                System.IO.File.Delete(item);
                        }
                    }

                    // Lưu file vào thư mục tạm của hệ thống
                    var path = Path.Combine(duongDan, fileName);
                    file.SaveAs(path);
                    ViewBag.FileName = fileName; // truyền lại tên file ra ngoài view

                    #region Lưu đường dẫn, thông tin file vào TempData
                    objFile.TrangThai = TrangThai.HoatDong;
                    objFile.TenHienThi = fileName;
                    var list = new List<TD_FileHoSoDinhKem>();
                    if (Session["TD_HoSoDuAn_" + User.Identity.GetUserId()] == null)
                    {
                        list.Add(objFile);
                    }
                    else
                    {
                        list = (List<TD_FileHoSoDinhKem>)Session["TD_HoSoDuAn_" + User.Identity.GetUserId()];

                        // Nếu đã có thì xóa trong list và tạo mới 
                        var obj = list.Find(o => o.STT == objFile.STT);
                        if (obj != null)
                            list.Remove(obj);
                        list.Add(objFile);
                    }
                    Session["TD_HoSoDuAn_" + User.Identity.GetUserId()] = list;
                    #endregion Lưu đường dẫn, thông tin file vào TempData
                }

                // redirect back to the index action to show the form once again
                ViewBag.Status = "status=\"OK\";";
            }
            //return Json(new { msg = "ok" });
            return View();
        }
 public ActionResult Up(int? id, int stt)
 {
     //ViewBag.TenFile = TempData["TenVanBan_" + User.Identity.GetUserId()];
     //ViewBag.STT = TempData["STT_" + User.Identity.GetUserId()];
     var obj = new TD_FileHoSoDinhKem();
     if (id != null)
         obj = db.TD_FileHoSoDinhKem.FirstOrDefault(o => o.FileHoSoDinhKem_ID == id);
     if (obj.STT == null)
         obj.STT = stt;
     return View(obj);
 }
        //[ValidateAntiForgeryToken]
        public ActionResult Edit(TD_HoSoDuAn tD_HoSoDuAn, List<TD_FileHoSoDinhKem> listFile)
        {
            var user = S4T_HaTinhBase.GetUserSession();
            if (user == null)
                return RedirectToAction("Login", "Account", new { returnUrl = Request.Url.PathAndQuery });

            // Kiểm tra quyền truy cập và cập nhật
            var per = CheckPermission(user);
            if (!per.isEdit)
                return Content("Bạn không có quyền thực hiện chức năng này");

            if (ModelState.IsValid)
            {
                using (var dbContextTransaction = db.Database.BeginTransaction())
                {
                    try
                    {
                        db.Entry(tD_HoSoDuAn).State = EntityState.Modified;
                        tD_HoSoDuAn.TuNgay = DateTime.Now;
                        tD_HoSoDuAn.DenNgay = DateTime.Now;
                        //db.SaveChanges();

                        // Lưu file vào hệ thống
                        //if (Request.Files.Count > 0)
                        if (listFile.Any())
                        {
                            var pathSource = ConfigurationManager.AppSettings["FolderUploadPath"];
                            if (string.IsNullOrEmpty(pathSource)) return Content("Không tìm thấy đường dẫn file");
                            var maxSTT = db.TD_FileHoSoDinhKem.Where(o => o.TrangThai == TrangThai.HoatDong && o.MaHoSo == tD_HoSoDuAn.MaHoSo).Max(o => o.STT);
                            var duongDanVatLy = pathSource + "/TD_HoSoDuAn";
                            if (!Directory.Exists(duongDanVatLy))
                                Directory.CreateDirectory(duongDanVatLy);

                            var listFileInDb = db.TD_FileHoSoDinhKem.Where(o => o.TrangThai == TrangThai.HoatDong && o.MaHoSo == tD_HoSoDuAn.MaHoSo);
                            var count = Request.Files.Count;
                            for (var i = 0; i < listFile.Count; i++)
                            {
                                var id = listFile[i].FileHoSoDinhKem_ID;

                                // File chưa được lưu trong database
                                if (id <= 0 || id == null)
                                {
                                    // Nếu có file thì sẽ tạo mới
                                    if (count > 0)
                                    {
                                        var file = Request.Files["file_" + i];
                                        if (file != null)
                                        {
                                            // Tạo tên file lưu trên hệ thống
                                            var fileName = tD_HoSoDuAn.HoSoDuAn_ID + "_" + tD_HoSoDuAn.LoaiDuAn_ID + "_" + Guid.NewGuid().ToString() + "_" + Path.GetFileName(file.FileName);

                                            // Tạo đường dẫn vật lý cho file
                                            var path = Path.Combine(duongDanVatLy, fileName);

                                            // Tạo object TD_FileHoSoDinhKem
                                            var objFileDinhKem = new TD_FileHoSoDinhKem
                                            {
                                                DuongDan = path,
                                                GhiChu = listFile[i].GhiChu,
                                                MaHoSo = tD_HoSoDuAn.MaHoSo,
                                                VanBan_ID = listFile[i].VanBan_ID,
                                                TenFile = fileName,
                                                TenHienThi = Path.GetFileName(file.FileName),
                                                TenVanBan = listFile[i].TenVanBan,
                                                TrangThai = TrangThai.HoatDong
                                            };

                                            // Lưu thông tin file vào db
                                            db.TD_FileHoSoDinhKem.Add(objFileDinhKem);
                                            //db.SaveChanges();

                                            // Lưu file lên hệ thống
                                            file.SaveAs(path);
                                        }
                                    }
                                    else
                                    {
                                        // Không có file thì ko làm gì
                                    }
                                }
                                // Có file đã được lưu trong database
                                else
                                {
                                    var objFileOld = listFileInDb.FirstOrDefault(o => o.FileHoSoDinhKem_ID == id);

                                    if (objFileOld != null)
                                    {
                                        // Không up file khác lên thay thì cập nhật lại thông tin Tên văn bản, Ghi chú
                                        if (count == 0)
                                        {
                                            objFileOld.TenVanBan = !string.IsNullOrEmpty(listFile[i].TenVanBan) ? listFile[i].TenVanBan.Trim() : "";
                                            objFileOld.GhiChu = !string.IsNullOrEmpty(listFile[i].GhiChu) ? listFile[i].GhiChu.Trim() : "";
                                            db.Entry(objFileOld).State = EntityState.Modified;
                                        }
                                        else
                                        {
                                            var file = Request.Files["file_" + i];

                                            // Up file khác lên thay thế file cũ
                                            if (file != null)
                                            {
                                                // Tạo tên file lưu trên hệ thống
                                                var fileName = tD_HoSoDuAn.HoSoDuAn_ID + "_" + tD_HoSoDuAn.LoaiDuAn_ID + "_" + Guid.NewGuid().ToString() + "_" + Path.GetFileName(file.FileName);

                                                // Tạo đường dẫn vật lý cho file
                                                var path = Path.Combine(duongDanVatLy, fileName);

                                                // Tạo object TD_FileHoSoDinhKem
                                                var objFileDinhKem = new TD_FileHoSoDinhKem
                                                {
                                                    DuongDan = path,
                                                    GhiChu = listFile[i].GhiChu,
                                                    MaHoSo = tD_HoSoDuAn.MaHoSo,
                                                    //STT = stt,
                                                    TenFile = fileName,
                                                    TenHienThi = Path.GetFileName(file.FileName),
                                                    TenVanBan = listFile[i].TenVanBan,
                                                    TrangThai = TrangThai.HoatDong
                                                };

                                                // Nếu đổi file khác thì đổi trạng thái của file cũ, và tạo 1 object mới
                                                if (listFile[i].FileHoSoDinhKem_ID != -1)
                                                {
                                                    //var id = listFile[i].FileHoSoDinhKem_ID;
                                                    //var objFileOld = db.TD_FileHoSoDinhKem.FirstOrDefault(o => o.FileHoSoDinhKem_ID == id);
                                                    objFileOld.TrangThai = TrangThai.KhongHoatDong;
                                                    db.Entry(objFileOld).State = EntityState.Modified;
                                                    //db.SaveChanges();

                                                    objFileDinhKem.STT = objFileOld.STT;
                                                }
                                                // Nếu lưu thêm file lên hệ thống
                                                else
                                                {
                                                    maxSTT++;
                                                    objFileDinhKem.STT = maxSTT;
                                                }

                                                // Lưu thông tin file vào db
                                                db.TD_FileHoSoDinhKem.Add(objFileDinhKem);
                                                //db.SaveChanges();

                                                // Lưu file lên hệ thống
                                                file.SaveAs(path);
                                            }
                                            // Không up file khác lên thay thì cập nhật lại thông tin Tên văn bản, Ghi chú
                                            else
                                            {
                                                objFileOld.TenVanBan = !string.IsNullOrEmpty(listFile[i].TenVanBan) ? listFile[i].TenVanBan.Trim() : "";
                                                objFileOld.GhiChu = !string.IsNullOrEmpty(listFile[i].GhiChu) ? listFile[i].GhiChu.Trim() : "";
                                                db.Entry(objFileOld).State = EntityState.Modified;
                                            }
                                        }
                                    }
                                    else
                                    {
                                        // Không tìm thấy file trong database
                                    }
                                }
                            }
                        }
                        db.SaveChanges();
                        dbContextTransaction.Commit();
                        return RedirectToAction("Index");
                        //return Json(new { ok = "ok" });
                        //return View();
                    }
                    catch (DbEntityValidationException ex)
                    {
                        dbContextTransaction.Rollback();
                        var exc = new ExceptionViewer();
                        exc.GetError(ex);
                    }
                }
            }
            GetViewBag(ViewReport.Edit);
            GetModelStateError(ViewData);
            return View(tD_HoSoDuAn);
        }
        //[ValidateAntiForgeryToken]
        public ActionResult Create(TD_HoSoDuAn tD_HoSoDuAn, List<TD_FileHoSoDinhKem> listFile)
        {
            var user = S4T_HaTinhBase.GetUserSession();
            if (user == null)
                return RedirectToAction("Login", "Account", new { returnUrl = Request.Url.PathAndQuery });

            // Kiểm tra quyền truy cập và cập nhật
            var per = CheckPermission(user);
            if (!per.isEdit)
                return Content("Bạn không có quyền thực hiện chức năng này");

            ModelState.Remove("MaHoSo");
            ModelState.Remove("TuNgay");
            ModelState.Remove("DenNgay");
            tD_HoSoDuAn.TuNgay = DateTime.Now;
            tD_HoSoDuAn.DenNgay = DateTime.Now;
            if (ModelState.IsValid)
            {
                using (var dbContextTransaction = db.Database.BeginTransaction())
                {
                    try
                    {
                        // Lưu tạm để tạo số biên nhận
                        db.TD_HoSoDuAn.Add(tD_HoSoDuAn);
                        db.SaveChanges();

                        // update lại số biên nhận
                        var maHoSo = DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM") + tD_HoSoDuAn.LoaiDuAn_ID + tD_HoSoDuAn.HoSoDuAn_ID;
                        tD_HoSoDuAn.MaHoSo = maHoSo;
                        db.Entry(tD_HoSoDuAn).State = EntityState.Modified;

                        // Tạo luồng công việc đầu tiên là tạo mới
                        var objLuongCV = new TD_LuongCongViec
                        {
                            Cap_ID = STTCapXuLy.CapNhatHoSo,
                            MaHoSo = maHoSo,
                            NgayGui = DateTime.Now,
                            NgayHenTra = DateTime.Now,
                            NguoiGui = user.UserName,
                            NguoiNhan = user.UserName,
                            NoiDung = "Tạo mới",
                            STT = 1,
                            TrangThai = TrangThai.HoatDong
                        };
                        db.TD_LuongCongViec.Add(objLuongCV);

                        // lưu file từ thư mục tạm vào thư mục chính
                        if (Request.Files.Count == 0)
                        {
                            //return Content("Không có file"); 
                        }
                        else
                        {
                            var pathSource = ConfigurationManager.AppSettings["FolderUploadPath"];
                            if (string.IsNullOrEmpty(pathSource)) return Content("Không tìm thấy đường dẫn file");

                            //var duongDan = pathSource + "/TD_HoSoDuAn/NewUpload/" + User.Identity.GetUserId();
                            //if (!Directory.Exists(duongDan))
                            //    Directory.CreateDirectory(duongDan);

                            var duongDanVatLy = pathSource + "/TD_HoSoDuAn";
                            if (!Directory.Exists(duongDanVatLy))
                                Directory.CreateDirectory(duongDanVatLy);

                            var indexFile = 0;
                            var stt = 1;
                            for (int i = 0; i < Request.Files.Count; i++)
                            {
                                var file = Request.Files[i];
                                if (file.ContentLength > 0)
                                {
                                    // Tạo tên file lưu trên hệ thống
                                    var fileName = tD_HoSoDuAn.HoSoDuAn_ID + "_" + tD_HoSoDuAn.LoaiDuAn_ID + "_" + Guid.NewGuid().ToString() + "_" + Path.GetFileName(file.FileName);

                                    // Lưu file lên hệ thống
                                    var path = Path.Combine(duongDanVatLy, fileName);
                                    file.SaveAs(path);

                                    // Tạo object TD_FileHoSoDinhKem                                    
                                    var objFileDinhKem = new TD_FileHoSoDinhKem
                                    {
                                        DuongDan = path,
                                        SoKyHieu = listFile[indexFile].SoKyHieu,
                                        MaHoSo = maHoSo,
                                        STT = stt,
                                        TenFile = fileName,
                                        TenHienThi = Path.GetFileName(file.FileName),
                                        TrichYeu = listFile[indexFile].TrichYeu,
                                        VanBan_ID = listFile[indexFile].VanBan_ID,
                                        TrangThai = TrangThai.HoatDong
                                    };

                                    // Lưu thông tin file vào db
                                    db.TD_FileHoSoDinhKem.Add(objFileDinhKem);
                                    stt++; // Cộng số thứ tự file thêm 1 nếu đã lưu 1 file thành công
                                }
                                indexFile++;
                            }
                        }

                        db.SaveChanges();
                        dbContextTransaction.Commit();
                        return RedirectToAction("Index");
                    }
                    catch (DbEntityValidationException ex)
                    {
                        dbContextTransaction.Rollback();
                        var exc = new ExceptionViewer();
                        exc.GetError(ex);
                    }
                }
            }
            tD_HoSoDuAn.ListFile = listFile;
            GetViewBag(ViewReport.Create);
            GetModelStateError(ViewData);
            return View(tD_HoSoDuAn);
        }