public IHttpActionResult Post(DTO_PRO_BaoCaoNangSuatKhoaHoc tbl_PRO_BaoCaoNangSuatKhoaHoc)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            ApplicationUser user = UserManager.FindById(User.Identity.GetUserId());

            if (user.StaffID <= 0)
            {
                return(BadRequest("Tài khoản chưa tạo nhân sự, không thể tạo mới"));
            }

            DTO_PRO_BaoCaoNangSuatKhoaHoc result = BS_PRO_BaoCaoNangSuatKhoaHoc.post_PRO_BaoCaoNangSuatKhoaHocCustom(db, user.StaffID, tbl_PRO_BaoCaoNangSuatKhoaHoc, Username);

            if (result != null && !string.IsNullOrEmpty(result.Error))
            {
                return(BadRequest(result.Error));
            }

            if (result != null)
            {
                return(CreatedAtRoute("get_PRO_BaoCaoNangSuatKhoaHoc", new { id = result.ID }, result));
            }
            return(Conflict());
        }
        public IHttpActionResult Put(int id, DTO_PRO_BaoCaoNangSuatKhoaHoc tbl_PRO_BaoCaoNangSuatKhoaHoc)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != tbl_PRO_BaoCaoNangSuatKhoaHoc.ID)
            {
                return(BadRequest());
            }
            ApplicationUser user = UserManager.FindById(User.Identity.GetUserId());

            if (user.StaffID <= 0)
            {
                return(BadRequest("Chưa tạo nhân sự cho tài khoản"));
            }

            string res = BS_PRO_BaoCaoNangSuatKhoaHoc.put_PRO_BaoCaoNangSuatKhoaHocCustom(db, id, tbl_PRO_BaoCaoNangSuatKhoaHoc, Username);

            if (string.IsNullOrEmpty(res))
            {
                return(StatusCode(HttpStatusCode.NoContent));
            }
            else
            {
                return(BadRequest(res));
            }
        }
        public IHttpActionResult Get(int id)
        {
            DTO_PRO_BaoCaoNangSuatKhoaHoc tbl_PRO_BaoCaoNangSuatKhoaHoc = BS_PRO_BaoCaoNangSuatKhoaHoc.get_PRO_BaoCaoNangSuatKhoaHocByID(db, id);

            if (tbl_PRO_BaoCaoNangSuatKhoaHoc == null)
            {
                return(NotFound());
            }

            return(Ok(tbl_PRO_BaoCaoNangSuatKhoaHoc));
        }
        public IHttpActionResult UpdateStatus(int id, string actionCode)
        {
            var result = BS_PRO_BaoCaoNangSuatKhoaHoc.updateStatus_PRO_BaoCaoNangSuatKhoaHoc(db, id, actionCode, Username);

            if (!string.IsNullOrEmpty(result))
            {
                return(BadRequest(result));
            }
            DTO_PRO_BaoCaoNangSuatKhoaHoc tbl_PRO_BaoCaoNangSuatKhoaHoc = BS_PRO_BaoCaoNangSuatKhoaHoc.get_PRO_BaoCaoNangSuatKhoaHoc(db, id);

            if (tbl_PRO_BaoCaoNangSuatKhoaHoc == null)
            {
                return(NotFound());
            }
            return(Ok(tbl_PRO_BaoCaoNangSuatKhoaHoc));
        }
        public static bool put_PRO_BaoCaoNangSuatKhoaHoc(AppEntities db, int ID, DTO_PRO_BaoCaoNangSuatKhoaHoc item, string Username)
        {
            bool result = false;
            var  dbitem = db.tbl_PRO_BaoCaoNangSuatKhoaHoc.Find(ID);

            if (dbitem != null)
            {
                dbitem.IDDeTai       = item.IDDeTai;
                dbitem.IDNhom        = item.IDNhom;
                dbitem.IDSite        = item.IDSite;
                dbitem.TenDeTai      = item.TenDeTai;
                dbitem.NgayBaoCao    = item.NgayBaoCao;
                dbitem.TapChiHoiNghi = item.TapChiHoiNghi;
                dbitem.IsDisabled    = item.IsDisabled;
                dbitem.IsDeleted     = item.IsDeleted;
                dbitem.IDKinhPhi     = item.IDKinhPhi;
                dbitem.KinhPhi       = item.KinhPhi;
                dbitem.IDNCV         = item.IDNCV;
                dbitem.IsApproved    = item.IsApproved;
                dbitem.ApprovedDate  = item.ApprovedDate;
                dbitem.FormConfig    = item.FormConfig;

                dbitem.ModifiedBy   = Username;
                dbitem.ModifiedDate = DateTime.Now;

                try
                {
                    db.SaveChanges();

                    BS_CUS_Version.update_CUS_Version(db, null, "DTO_PRO_BaoCaoNangSuatKhoaHoc", DateTime.Now, Username);

                    result = true;
                }
                catch (DbEntityValidationException e)
                {
                    errorLog.logMessage("put_PRO_BaoCaoNangSuatKhoaHoc", e);
                    result = false;
                }
            }
            return(result);
        }
        public static string put_PRO_BaoCaoNangSuatKhoaHocCustom(AppEntities db, int ID, DTO_PRO_BaoCaoNangSuatKhoaHoc item, string Username)
        {
            string result = string.Empty;
            var    dbitem = db.tbl_PRO_BaoCaoNangSuatKhoaHoc.Find(ID);

            if (dbitem != null)
            {
                dbitem.IDDeTai       = item.IDDeTai;
                dbitem.IDNhom        = item.IDNhom;
                dbitem.IDSite        = item.IDSite;
                dbitem.TenDeTai      = item.TenDeTai;
                dbitem.NgayBaoCao    = item.NgayBaoCao;
                dbitem.TapChiHoiNghi = item.TapChiHoiNghi;
                dbitem.IsDisabled    = item.IsDisabled;
                dbitem.IsDeleted     = item.IsDeleted;
                dbitem.IDKinhPhi     = item.IDKinhPhi;
                dbitem.IDNCV         = item.IDNCV;
                dbitem.IsApproved    = item.IsApproved;
                dbitem.ApprovedDate  = item.ApprovedDate;

                if (item.IsApproved)
                {
                    return("Kinh phí đã duyệt, không thể chỉnh sửa");
                }

                var kinhphi = db.tbl_CAT_KinhPhi.FirstOrDefault(c => c.ID == item.IDKinhPhi);
                if (kinhphi != null && kinhphi.IsManual != true)
                {
                    DateTime dt      = item.NgayBaoCao;
                    var      banggia = db.tbl_CAT_BangGiaKinhPhi.Where(c => c.IDKinhPhi == item.IDKinhPhi && c.NgayHieuLuc <= dt).OrderByDescending(c => c.NgayHieuLuc).FirstOrDefault();
                    if (banggia != null)
                    {
                        dbitem.KinhPhi = banggia.Gia;
                    }
                }
                else
                {
                    dbitem.KinhPhi = item.KinhPhi;
                }

                dbitem.ModifiedBy   = Username;
                dbitem.ModifiedDate = DateTime.Now;

                try
                {
                    db.SaveChanges();

                    BS_CUS_Version.update_CUS_Version(db, null, "DTO_PRO_BaoCaoNangSuatKhoaHoc", DateTime.Now, Username);
                }
                catch (DbEntityValidationException e)
                {
                    errorLog.logMessage("put_PRO_BaoCaoNangSuatKhoaHoc", e);
                    result = e.InnerException.Message;
                }
            }
            return(result);
        }
        public static DTO_PRO_BaoCaoNangSuatKhoaHoc post_PRO_BaoCaoNangSuatKhoaHocCustom(AppEntities db, int StaffID, DTO_PRO_BaoCaoNangSuatKhoaHoc item, string Username)
        {
            tbl_PRO_BaoCaoNangSuatKhoaHoc dbitem = new tbl_PRO_BaoCaoNangSuatKhoaHoc();

            if (item != null)
            {
                item.Error           = string.Empty;
                dbitem.IDDeTai       = item.IDDeTai;
                dbitem.IDNhom        = item.IDNhom;
                dbitem.IDSite        = item.IDSite;
                dbitem.TenDeTai      = item.TenDeTai;
                dbitem.NgayBaoCao    = item.NgayBaoCao;
                dbitem.TapChiHoiNghi = item.TapChiHoiNghi;
                dbitem.IsDisabled    = item.IsDisabled;
                dbitem.IsDeleted     = item.IsDeleted;
                dbitem.IDKinhPhi     = item.IDKinhPhi;
                dbitem.KinhPhi       = item.KinhPhi;
                dbitem.IDNCV         = StaffID;

                dbitem.CreatedBy   = Username;
                dbitem.CreatedDate = DateTime.Now;

                dbitem.ModifiedBy   = Username;
                dbitem.ModifiedDate = DateTime.Now;

                string sKey   = SYSConfigCode.ThoiGianBaoCaoNSKH.ToString();
                var    config = db.tbl_SYS_Config.FirstOrDefault(c => c.Code == sKey && !c.IsDeleted);
                if (config != null)
                {
                    try
                    {
                        var setting = Newtonsoft.Json.JsonConvert.DeserializeObject <DTO_SYS_Config_ThoiGianBaoCaoNSKH>(config.Value);
                        if (setting != null && setting.NgayBatDau.HasValue && setting.NgayKetThuc.HasValue)
                        {
                            int NgayBatDau  = setting.NgayBatDau.Value.Day;
                            int NgayKetThuc = setting.NgayKetThuc.Value.Day;
                            if (dbitem.CreatedDate.Day < NgayBatDau || dbitem.CreatedDate.Day > NgayKetThuc)
                            {
                                item.Error = "Đã hết thời hạn được báo cáo, thời hạn báo cáo cho phép từ ngày " + NgayBatDau + " đến ngày " + NgayKetThuc + " hằng tháng";
                            }
                        }
                    }
                    catch { }
                }

                if (string.IsNullOrEmpty(item.Error))
                {
                    var kinhphi = db.tbl_CAT_KinhPhi.FirstOrDefault(c => c.ID == item.IDKinhPhi);
                    if (kinhphi != null && kinhphi.IsManual != true)
                    {
                        DateTime dt      = item.NgayBaoCao;
                        var      banggia = db.tbl_CAT_BangGiaKinhPhi.Where(c => c.IDKinhPhi == item.IDKinhPhi && c.NgayHieuLuc <= dt).OrderByDescending(c => c.NgayHieuLuc).FirstOrDefault();
                        if (banggia != null)
                        {
                            dbitem.KinhPhi = banggia.Gia;
                        }
                    }

                    try
                    {
                        db.tbl_PRO_BaoCaoNangSuatKhoaHoc.Add(dbitem);
                        db.SaveChanges();

                        BS_CUS_Version.update_CUS_Version(db, null, "DTO_PRO_BaoCaoNangSuatKhoaHoc", DateTime.Now, Username);


                        item.ID = dbitem.ID;

                        item.CreatedBy   = dbitem.CreatedBy;
                        item.CreatedDate = dbitem.CreatedDate;

                        item.ModifiedBy   = dbitem.ModifiedBy;
                        item.ModifiedDate = dbitem.ModifiedDate;
                    }
                    catch (DbEntityValidationException e)
                    {
                        errorLog.logMessage("post_PRO_BaoCaoNangSuatKhoaHoc", e);
                        item = null;
                    }
                }
            }
            return(item);
        }
        public static DTO_PRO_BaoCaoNangSuatKhoaHoc post_PRO_BaoCaoNangSuatKhoaHoc(AppEntities db, DTO_PRO_BaoCaoNangSuatKhoaHoc item, string Username)
        {
            tbl_PRO_BaoCaoNangSuatKhoaHoc dbitem = new tbl_PRO_BaoCaoNangSuatKhoaHoc();

            if (item != null)
            {
                dbitem.IDDeTai       = item.IDDeTai;
                dbitem.IDNhom        = item.IDNhom;
                dbitem.IDSite        = item.IDSite;
                dbitem.TenDeTai      = item.TenDeTai;
                dbitem.NgayBaoCao    = item.NgayBaoCao;
                dbitem.TapChiHoiNghi = item.TapChiHoiNghi;
                dbitem.IsDisabled    = item.IsDisabled;
                dbitem.IsDeleted     = item.IsDeleted;
                dbitem.IDKinhPhi     = item.IDKinhPhi;
                dbitem.KinhPhi       = item.KinhPhi;
                dbitem.IDNCV         = item.IDNCV;
                dbitem.IsApproved    = item.IsApproved;
                dbitem.ApprovedDate  = item.ApprovedDate;
                dbitem.FormConfig    = item.FormConfig;

                dbitem.CreatedBy   = Username;
                dbitem.CreatedDate = DateTime.Now;

                dbitem.ModifiedBy   = Username;
                dbitem.ModifiedDate = DateTime.Now;


                try
                {
                    db.tbl_PRO_BaoCaoNangSuatKhoaHoc.Add(dbitem);
                    db.SaveChanges();

                    BS_CUS_Version.update_CUS_Version(db, null, "DTO_PRO_BaoCaoNangSuatKhoaHoc", DateTime.Now, Username);


                    item.ID = dbitem.ID;

                    item.CreatedBy   = dbitem.CreatedBy;
                    item.CreatedDate = dbitem.CreatedDate;

                    item.ModifiedBy   = dbitem.ModifiedBy;
                    item.ModifiedDate = dbitem.ModifiedDate;
                }
                catch (DbEntityValidationException e)
                {
                    errorLog.logMessage("post_PRO_BaoCaoNangSuatKhoaHoc", e);
                    item = null;
                }
            }
            return(item);
        }