Пример #1
0
        private Document queryDocument()
        {
            NghiphepEntities db = new NghiphepEntities();
            var query           = (from doc in db.Documents
                                   join user in db.Users
                                   on doc.createdById equals user.C_id
                                   select new
            {
                C_id = doc.C_id,
                createdBy = user,
                code = doc.code,
                status = doc.status,
                createdAt = doc.createdAt
            }).OrderBy(x => x.code);
            var documents = query.ToList().Select(r => new Document
            {
                C_id      = r.C_id,
                createdBy = r.createdBy,
                code      = r.code,
                status    = r.status,
                createdAt = r.createdAt
            }).ToList();

            documents.Reverse();
            return(documents.Count > 0 ? documents[0] : null);
        }
Пример #2
0
 public ActionResult Employee(string id)
 {
     if (id != null)
     {
         NghiphepEntities db = new NghiphepEntities();
         var query           = (from user in db.Users
                                join title in db.Titles
                                on user.titleId equals title.C_id
                                where user.C_id == id
                                select new
         {
             C_id = user.C_id,
             title = title,
             username = user.username
         });
         var users = query.ToList().Select(r => new User
         {
             C_id     = r.C_id,
             Title    = r.title,
             username = r.username
         }).ToList();
         return(View(users[0]));
     }
     else
     {
         return(View(new User()
         {
             username = "******",
             Title = new Title()
             {
                 name = "Default"
             }
         }));
     }
 }
Пример #3
0
 public ActionResult ChangePassword(ChangePasswordViewModel model)
 {
     //validate
     if (!ModelState.IsValid)
     {
         return(View(model));
     }
     //validate
     if (model.NewPassword != model.NewPasswordAgain)
     {
         ModelState.AddModelError("", "Mật khẩu mới được nhập lại không khớp.");
         return(View(model));
     }
     //Đổi trong database
     using (NghiphepEntities db = new NghiphepEntities())
     {
         var user = db.Users.SingleOrDefault(x => x.username == User.Identity.Name && x.password == model.CurrentPassword);
         if (user != null)
         {
             user.password = model.NewPassword;
             db.SaveChanges();
             ViewBag.MessageSuccess = "Mật khẩu đã được đổi thành công.";
             return(View(model));
         }
         ModelState.AddModelError("", "Mật khẩu không đúng.");
         return(View(model));
     }
 }
Пример #4
0
        public ActionResult ViewDocument(string id)
        {
            NghiphepEntities db = new NghiphepEntities();
            var query           = (from doc in db.Documents
                                   join user in db.Users
                                   on doc.createdById equals user.C_id
                                   where doc.C_id == id
                                   select new
            {
                C_id = doc.C_id,
                createdBy = user,
                code = doc.code,
                status = doc.status,
                createdAt = doc.createdAt,
                startDate = doc.startDate,
                endDate = doc.endDate,
                reason = doc.reason
            }).OrderBy(x => x.code);
            var documents = query.ToList().Select(r => new Document
            {
                C_id            = r.C_id,
                createdBy       = r.createdBy,
                code            = r.code,
                status          = r.status,
                reason          = r.reason,
                createdAt       = r.createdAt,
                startDateString = new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(r.startDate) / 1000d)).ToLocalTime().ToString(),
                endDateString   = new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(r.endDate) / 1000d)).ToLocalTime().ToString(),
                count           = (int)((r.endDate - r.startDate) / 1000 / 3600 / 24) == 0 ? "1 ngày" : ((int)((r.endDate - r.startDate) / 1000 / 3600 / 24)).ToString() + " ngày"
            }).ToList();

            documents.Reverse();
            return(View(documents[0]));
        }
        public ActionResult Register(NHANVIEN nv)
        {
            NghiphepEntities db = new NghiphepEntities();
            User             u  = new User
            {
                C_id       = "_User_01",
                address    = nv.address,
                contractId = nv.contractId,
                email      = nv.email,
                dayOff     = 12,
                fullName   = nv.fullName
            };

            db.Users.Add(u);
            db.SaveChanges();
            var contract_query = (from contract in db.ContractTypes
                                  select new
            {
                C_id = contract.C_id,
                code = contract.code,
                name = contract.name,
                dayOff = contract.dayOff
            });
            var contracts = contract_query.ToList().Select(c => new ContractType
            {
                C_id   = c.C_id,
                code   = c.code,
                name   = c.name,
                dayOff = c.dayOff
            }).ToList();

            ViewData["contracts"] = contracts;
            return(View());
        }
Пример #6
0
 public ActionResult CreateLeaveForm(TaoDonNghiPhep dnp)
 {
     System.Diagnostics.Debug.WriteLine("CreateLeaveForm CreateLeaveForm CreateLeaveForm ", dnp.reason);
     if (ModelState.IsValid)
     {
         NghiphepEntities db       = new NghiphepEntities();
         Document         document = queryDocument();
         string           code     = CreateAutoCode(document != null ? document.code : null);
         var user = db.Users.FirstOrDefault(x => x.username == User.Identity.Name);
         var doc  = new Document()
         {
             C_id        = code,
             code        = code,
             status      = 0,
             createdAt   = (float)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds * 1000,
             startDate   = (float)(DateTime.ParseExact(dnp.dateStart, "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture).Subtract(new DateTime(1970, 1, 1))).TotalSeconds * 1000,
             endDate     = (float)(DateTime.ParseExact(dnp.dateEnd, "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture).Subtract(new DateTime(1970, 1, 1))).TotalSeconds * 1000,
             createdById = user.C_id,
             reason      = dnp.reason
         };
         db.Documents.Add(doc);
         //try
         //{
         db.SaveChanges();
         //}
         //catch (DbEntityValidationException e)
         //{
         //    foreach (var eve in e.EntityValidationErrors)
         //    {
         //        System.Diagnostics.Debug.WriteLine(eve.Entry.Entity.GetType().Name, eve.Entry.State);
         //        foreach (var ve in eve.ValidationErrors)
         //        {
         //            System.Diagnostics.Debug.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
         //                ve.PropertyName, ve.ErrorMessage);
         //        }
         //    }
         //}
         //write code to update student
         //Gửi mail khi tạo đơn, tương tự bên dưới luôn (CancelDocument)
         string mailBody = "Xin chào: " + user.fullName + "<br>"
                           + "Thông tin đơn nghỉ phép của bạn đang chờ duyệt: <br>"
                           + "- Từ ngày: " + dnp.dateStart + "<br>"
                           + "- Đến ngày: " + dnp.dateEnd + "<br>"
                           + "- Lý do: " + dnp.reason + "<br>"
                           + "Xin cảm ơn.";
         var mail = new MailModel
         {
             ListToEmail = new List <string> {
                 user.email
             },
             Body         = mailBody,
             EmailSubject = "Thông tin đơn xin nghỉ phép"
         };
         EmailHelper.SendMail(mail);
         return(RedirectToAction("Employee"));
     }
     return(RedirectToAction("CreateNew"));
 }
Пример #7
0
 public ActionResult CreateUser(UserViewModel user)
 {
     //Validate dữ liệu, nếu chưa đúng thì nhập lại
     if (!ModelState.IsValid)
     {
         return(View(user));
     }
     using (NghiphepEntities db = new NghiphepEntities())
     {
         //Nếu id đã tồn tại thì báo lỗi id đã tồn tại
         var use = db.Users.FirstOrDefault(x => x.C_id == user.C_id);
         if (use != null)
         {
             ModelState.AddModelError("", "ID đã tồn tại");
             return(View(user));
         }
         var use1 = db.Users.FirstOrDefault(x => x.username == user.username);
         if (use1 != null)
         {
             //Nếu username đã tồn tại thì báo lỗi username đã tồn tại
             ModelState.AddModelError("", "Tên đăng nhập đã tồn tại");
             return(View(user));
         }
         //Tạo model user từ thông tin đã nhập để them vào database
         var newUser = new User
         {
             C_id         = user.C_id,
             username     = user.username,
             address      = user.address,
             contractId   = user.contractId,
             email        = user.email,
             gender       = user.gender,
             fullName     = user.fullName,
             isActive     = true,
             dayOff       = user.dayOff,
             password     = user.password,
             mobile       = user.mobile,
             titleId      = user.titleId,
             departmentId = user.departmentId,
             dateOfBirth  = user.dateOfBirth,
         };
         try
         {
             db.Users.Add(newUser);
             db.SaveChanges();
         }
         catch (Exception ex)
         {
             //Lưu thất bại báo lỗi (khi không kết nối đc database)
             ModelState.AddModelError("", "Lỗi hệ thống");
             return(View(user));
         }
         //Lưu thành công thì chuyển đến tran index
         return(RedirectToAction("Index"));
     }
 }
Пример #8
0
        public ActionResult Profile(string id)
        {
            var result          = new QueryResult <User>();
            NghiphepEntities db = new NghiphepEntities();
            // Query your data here. Obey Ordering, paging and filtering parameters given in the context.QueryOptions.
            // Use Entity Framework, a module from your IoC Container, or any other method.
            // Return QueryResult object containing IEnumerable<YouModelItem>
            var query = (from user in db.Users
                         join contract in db.ContractTypes
                         on user.contractId equals contract.C_id
                         where user.C_id == id
                         select new
            {
                C_id = user.C_id,
                username = user.username,
                dayOff = user.dayOff,
                contractId = user.contractId,
                createdAt = user.createdAt,
                ContractType = contract,
                fullName = user.fullName,
                email = user.email,
                mobile = user.mobile
            });
            var user_result = query.ToList().Select(r => new User
            {
                C_id         = r.C_id,
                username     = r.username,
                fullName     = r.fullName,
                dayOff       = r.dayOff,
                createdAt    = r.createdAt,
                contractId   = r.ContractType.name,
                ContractType = r.ContractType,
                email        = r.email,
                mobile       = r.mobile
            }).ToList()[0];

            var contract_query = (from contract in db.ContractTypes
                                  select new
            {
                C_id = contract.C_id,
                code = contract.code,
                name = contract.name,
                dayOff = contract.dayOff
            });
            var contracts = contract_query.ToList().Select(c => new ContractType
            {
                C_id   = c.C_id,
                code   = c.code,
                name   = c.name,
                dayOff = c.dayOff
            }).ToList();

            ViewData["contracts"] = contracts;
            return(View(user_result));
        }
Пример #9
0
        public ActionResult DeleteUser(string id)
        {
            NghiphepEntities db = new NghiphepEntities();
            var result          = db.Users.SingleOrDefault(b => b.C_id == id);

            if (result != null)
            {
                result.isActive = false;
                db.SaveChanges();
            }
            return(RedirectToAction("Index"));
        }
Пример #10
0
        public ActionResult CancelDocument(string id)
        {
            NghiphepEntities db       = new NghiphepEntities();
            Document         document = queryDocument();
            var result = db.Documents.SingleOrDefault(b => b.C_id == id);

            if (result != null)
            {
                result.status = 100;
                db.SaveChanges();
            }
            return(RedirectToAction("Index"));
        }
Пример #11
0
 public ActionResult ShowDataBaseForUser(string id)
 {
     //var item = db.Users.ToList();
     //return View(item);
     if (id != null)
     {
         NghiphepEntities db = new NghiphepEntities();
         var query           = (from user in db.Users
                                select new
         {
             C_id = user.C_id,
             isActive = user.isActive,
             titleId = user.titleId,
             username = user.username,
             fullName = user.fullName,
             address = user.address,
             gender = user.gender,
             email = user.email,
             mobile = user.mobile,
         });
         var users = query.ToList().Select(r => new User
         {
             C_id     = r.C_id,
             isActive = r.isActive,
             titleId  = r.titleId,
             username = r.username,
             fullName = r.fullName,
             address  = r.address,
             gender   = r.gender,
             email    = r.email,
             mobile   = r.mobile,
         }).ToList();
         return(View(users[0]));
     }
     else
     {
         return(View(new User()
         {
             username = "******",
             Title = new Title()
             {
                 name = "Default"
             }
         }));
     }
 }
Пример #12
0
        public ActionResult SaveUser(User user)
        {
            NghiphepEntities db = new NghiphepEntities();
            var result          = db.Users.SingleOrDefault(b => b.username == user.username);

            if (result != null)
            {
                result.username = user.username;
                result.fullName = user.fullName;
                result.email    = user.email;
                result.mobile   = user.mobile;
                //result.contractId = user.contractId;
                result.dayOff = user.dayOff;
                db.SaveChanges();
            }
            return(RedirectToAction("Edit/" + result.C_id));
        }
Пример #13
0
        public ActionResult CancelDocument(string id)
        {
            NghiphepEntities db       = new NghiphepEntities();
            Document         document = queryDocument();
            var result = db.Documents.SingleOrDefault(b => b.C_id == id);
            var admin  = db.Users.FirstOrDefault(x => x.username == User.Identity.Name);

            if (result != null)
            {
                var verifyAt = (float)(DateTime.Now.Subtract(new DateTime(1970, 1, 1))).TotalSeconds * 1000;
                result.status       = 100;
                result.verifiedById = admin.C_id;
                result.verifiedAt   = verifyAt;
                db.SaveChanges();

                var start = new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(result.startDate) / 1000d)).ToLocalTime().ToString();
                var end   = new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(result.endDate) / 1000d)).ToLocalTime().ToString();
                var user  = db.Users.SingleOrDefault(b => b.C_id == result.createdById);
                //Tạo nội dung email, nó là 1 chuỗi dạng html hay string thường đều được
                string mailBody = "Xin chào: " + user.fullName + "<br><br>"
                                  + "Đơn nghỉ phép của bạn không được duyệt" + "<br>"
                                  + "- Mã đơn: " + result.C_id + "<br>"
                                  + "- Từ ngày: " + start + "<br>"
                                  + "- Đến ngày: " + end + "<br>"
                                  + "- Lý do: " + result.reason + "<br>"
                                  + "Người hủy: " + admin.fullName + "<br>"
                                  + "Xin cảm ơn.";
                //Tạo 1 email theo model bên kia (MailModel)
                var mail = new MailModel
                {
                    //Danh sách địa chỉ nhận mail,nếu muốn gửi nhiều email cùng lúc thì thêm dô list này
                    //Ở đây chỉ gửi cho email người tạo đơn
                    ListToEmail = new List <string> {
                        user.email
                    },
                    //Nội dung email
                    Body = mailBody,
                    //Subject email
                    EmailSubject = "Đơn nghỉ phép không được duyệt"
                };
                //Gọi hàm gửi mail
                EmailHelper.SendMail(mail);
            }

            return(RedirectToAction("Manager"));
        }
Пример #14
0
        public ActionResult VerifyDocument(string id)
        {
            NghiphepEntities db       = new NghiphepEntities();
            Document         document = queryDocument();
            var result = db.Documents.SingleOrDefault(b => b.C_id == id);
            var admin  = db.Users.FirstOrDefault(x => x.username == User.Identity.Name);

            if (result != null)
            {
                var verifyAt = (float)(DateTime.Now.Subtract(new DateTime(1970, 1, 1))).TotalSeconds * 1000;
                result.status       = 99;
                result.verifiedById = admin.C_id;
                result.verifiedAt   = verifyAt;
                db.SaveChanges();
            }
            var user = db.Users.SingleOrDefault(b => b.C_id == result.createdById);

            if (user != null)
            {
                user.dayOff = user.dayOff - (int)((result.endDate - result.startDate) / 1000 / 3600 / 24);
                db.SaveChanges();
            }
            var start = new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(result.startDate) / 1000d)).ToLocalTime().ToString();
            var end   = new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(result.endDate) / 1000d)).ToLocalTime().ToString();

            //Gửi mail khi người quản lý approve đơn nghỉ phép (tương tự như hàm dưới CancelDocument)
            string mailBody = "Xin chào: " + user.fullName + "<br>"
                              + "Đơn nghỉ phép của bạn đã được duyệt" + "<br><br>"
                              + "- Mã đơn: " + result.C_id + "<br>"
                              + "- Từ ngày: " + start + "<br>"
                              + "- Đến ngày: " + end + "<br>"
                              + "- Lý do: " + result.reason + "<br>"
                              + "Người duyệt: " + admin.fullName + "<br>"
                              + "Xin cảm ơn.";
            var mail = new MailModel
            {
                ListToEmail = new List <string> {
                    user.email
                },
                Body         = mailBody,
                EmailSubject = "Đơn nghỉ phép được duyệt"
            };

            EmailHelper.SendMail(mail);
            return(RedirectToAction("Manager"));
        }
        public ActionResult CheckLogin(LoginModel model)
        {
            System.Diagnostics.Debug.WriteLine("UserName ", model.UserName);
            System.Diagnostics.Debug.WriteLine("Password ", model.Password);
            NghiphepEntities db = new NghiphepEntities();
            var query           = (from user in db.Users
                                   join title in db.Titles
                                   on user.titleId equals title.C_id
                                   where user.username == model.UserName && user.password == model.Password && user.isActive == true
                                   select new
            {
                C_id = user.C_id,
                title = title,
                username = user.username
            });
            var users = query.ToList().Select(r => new User
            {
                C_id     = r.C_id,
                Title    = r.title,
                username = r.username
            }).ToList();

            if (users.Count > 0)
            {
                //Sửa lại hàm login, trong asp.net dùng cái này để login
                //Lưu session login
                FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
                var identity  = new GenericIdentity(model.UserName);
                var principal = new GenericPrincipal(identity, new string[0]);
                HttpContext.User        = principal;
                Thread.CurrentPrincipal = principal;
                // If we got this far, something failed, redisplay form
                if (users[0].Title.code == "GIAMDOC")
                {
                    return(RedirectToAction("Manager/" + users[0].C_id, "DonNghiPhep"));
                }
                else
                {
                    return(RedirectToAction("Employee/" + users[0].C_id, "DonNghiPhep"));
                }
            }
            else
            {
                return(RedirectToAction("Login"));
            }
        }
Пример #16
0
        public ActionResult VerifyDocument(string id)
        {
            NghiphepEntities db       = new NghiphepEntities();
            Document         document = queryDocument();
            var result = db.Documents.SingleOrDefault(b => b.C_id == id);

            if (result != null)
            {
                result.status = 99;
                db.SaveChanges();
            }
            var user = db.Users.SingleOrDefault(b => b.C_id == result.createdById);

            if (user != null)
            {
                user.dayOff = user.dayOff - (int)((result.endDate - result.startDate) / 1000 / 3600 / 24);
                db.SaveChanges();
            }
            return(RedirectToAction("Index"));
        }
Пример #17
0
 public ActionResult Index()
 {
     ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
     //Lấy dữ liệu đơn nghỉ phép để hiển thị ra dashbord
     using (NghiphepEntities db = new NghiphepEntities())
     {
         var result = from u in db.Users
                      join d in db.Documents
                      on u.C_id equals d.createdById
                      select new
         {
             DocumentId          = d.C_id,
             CreateBy            = u.fullName,
             StartDate           = d.startDate,
             EndDate             = d.endDate,
             Status              = d.status,
             Reason              = d.reason,
             ApproveOrRejectBy   = d.verifiedById,
             ApproveOrRejectDate = d.verifiedAt,
             DayOff              = u.dayOff
         };
         var listData = new List <DashboardViewModel>();
         foreach (var item in result)
         {
             var r = new DashboardViewModel
             {
                 DocumentId          = item.DocumentId,
                 CreateBy            = item.CreateBy,
                 StartDate           = item.StartDate.HasValue ? convertDoubleToDatetime(item.StartDate.Value) : "",
                 EndDate             = item.StartDate.HasValue ? convertDoubleToDatetime(item.EndDate.Value) : "",
                 Reason              = item.Reason,
                 Status              = item.Status == 0 ? "Chờ duyệt" : item.Status == 99 ? "Đã duyệt" : "Đã hủy",
                 ApproveOrRejectBy   = item.ApproveOrRejectBy,
                 ApproveOrRejectDate = item.ApproveOrRejectDate.HasValue ? convertDoubleToDatetime(item.ApproveOrRejectDate.Value) : "",
                 DayOff              = item.DayOff.HasValue ? item.DayOff.Value : 0
             };
             listData.Add(r);
         }
         return(View(listData));
     }
 }
Пример #18
0
 public ActionResult CreateLeaveForm(TaoDonNghiPhep dnp)
 {
     System.Diagnostics.Debug.WriteLine("CreateLeaveForm CreateLeaveForm CreateLeaveForm ", dnp.reason);
     if (ModelState.IsValid)
     {
         NghiphepEntities db       = new NghiphepEntities();
         Document         document = queryDocument();
         string           code     = CreateAutoCode(document != null ? document.code : null);
         db.Documents.Add(new Document()
         {
             C_id        = code,
             code        = code,
             status      = 0,
             createdAt   = (float)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds * 1000,
             startDate   = (float)(DateTime.ParseExact(dnp.dateStart, "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture).Subtract(new DateTime(1970, 1, 1))).TotalSeconds * 1000,
             endDate     = (float)(DateTime.ParseExact(dnp.dateEnd, "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture).Subtract(new DateTime(1970, 1, 1))).TotalSeconds * 1000,
             createdById = "USER_002",
             reason      = dnp.reason
         });
         //try
         //{
         db.SaveChanges();
         //}
         //catch (DbEntityValidationException e)
         //{
         //    foreach (var eve in e.EntityValidationErrors)
         //    {
         //        System.Diagnostics.Debug.WriteLine(eve.Entry.Entity.GetType().Name, eve.Entry.State);
         //        foreach (var ve in eve.ValidationErrors)
         //        {
         //            System.Diagnostics.Debug.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
         //                ve.PropertyName, ve.ErrorMessage);
         //        }
         //    }
         //}
         //write code to update student
         return(RedirectToAction("Employee"));
     }
     return(RedirectToAction("CreateNew"));
 }
        public ActionResult Register()
        {
            NghiphepEntities db = new NghiphepEntities();
            var contract_query  = (from contract in db.ContractTypes
                                   select new
            {
                C_id = contract.C_id,
                code = contract.code,
                name = contract.name,
                dayOff = contract.dayOff
            });
            var contracts = contract_query.ToList().Select(c => new ContractType
            {
                C_id   = c.C_id,
                code   = c.code,
                name   = c.name,
                dayOff = c.dayOff
            }).ToList();

            ViewData["contracts"] = contracts;
            return(View());
        }
        public ActionResult CheckLogin(LoginModel model)
        {
            System.Diagnostics.Debug.WriteLine("UserName ", model.UserName);
            System.Diagnostics.Debug.WriteLine("Password ", model.Password);
            NghiphepEntities db = new NghiphepEntities();
            var query           = (from user in db.Users
                                   join title in db.Titles
                                   on user.titleId equals title.C_id
                                   where user.username == model.UserName && user.password == model.Password && user.isActive == true
                                   select new
            {
                C_id = user.C_id,
                title = title,
                username = user.username
            });
            var users = query.ToList().Select(r => new User
            {
                C_id     = r.C_id,
                Title    = r.title,
                username = r.username
            }).ToList();

            if (users.Count > 0)
            {
                // If we got this far, something failed, redisplay form
                if (users[0].Title.code == "GIAMDOC")
                {
                    return(RedirectToAction("Manager/" + users[0].C_id, "DonNghiPhep"));
                }
                else
                {
                    return(RedirectToAction("Employee/" + users[0].C_id, "DonNghiPhep"));
                }
            }
            else
            {
                return(RedirectToAction("Login"));
            }
        }
        public ActionResult Register(User model)
        {
            NghiphepEntities db  = new NghiphepEntities();
            User             tbl = new User();

            tbl.C_id     = model.C_id;
            tbl.fullName = model.fullName;
            tbl.gender   = model.gender;
            //tbl.dateOfBirth = (float)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds * 1000;
            tbl.dateOfBirth = model.dateOfBirth;
            tbl.address     = model.address;
            tbl.email       = model.email;
            tbl.mobile      = model.mobile;
            tbl.username    = model.username;
            tbl.password    = model.password;

            tbl.isActive = false;

            db.Users.Add(tbl);
            db.SaveChanges();
            return(View());
        }
Пример #22
0
 public ActionResult CreateLeaveForm(TaoDonNghiPhep dnp)
 {
     System.Diagnostics.Debug.WriteLine("CreateLeaveForm CreateLeaveForm CreateLeaveForm");
     if (ModelState.IsValid)
     {
         NghiphepEntities db       = new NghiphepEntities();
         Document         document = queryDocument();
         string           code     = CreateAutoCode(document.code);
         db.Documents.Add(new Document()
         {
             C_id        = code,
             code        = code,
             status      = 0,
             createdAt   = (float)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds * 1000,
             startDate   = (float)(DateTime.ParseExact(dnp.dateStart, "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture).Subtract(new DateTime(1970, 1, 1))).TotalSeconds * 1000,
             endDate     = (float)(DateTime.ParseExact(dnp.dateEnd, "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture).Subtract(new DateTime(1970, 1, 1))).TotalSeconds * 1000,
             createdById = "USER_002"
         });
         db.SaveChanges();
         //write code to update student
         return(RedirectToAction("Index"));
     }
     return(RedirectToAction("CreateNew"));
 }
Пример #23
0
 public static void RegisterGrids()
 {
     MVCGridDefinitionTable.Add("WaitingDocumentGrid", new MVCGridBuilder <Document>()
                                .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                .WithSorting(sorting: true, defaultSortColumn: "Id", defaultSortDirection: SortDirection.Dsc)
                                //.WithPaging(true, 5)
                                .WithAdditionalQueryOptionNames("search")
                                .AddColumns(cols =>
     {
         // Add your columns here
         cols.Add("code").WithColumnName("code")
         .WithHeaderText("Mã đơn")
         .WithValueExpression(i => i.code);         // use the Value Expression to return the cell text for this column
         cols.Add("status").WithColumnName("status")
         .WithHeaderText("Trạng thái")
         .WithValueExpression((i, c) => {
             if (i.status == 0)
             {
                 return("Chờ duyệt");
             }
             else
             if (i.status == 99)
             {
                 return("Đã duyệt");
             }
             return("Đã hủy");
         });
         cols.Add("createdAt").WithColumnName("createdAt")
         .WithHeaderText("Thời gian tạo")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.createdAt) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("createdBy").WithColumnName("createdBy")
         .WithHeaderText("Người tạo")
         .WithValueExpression(i => i.createdBy.username);
         cols.Add("startDate").WithColumnName("startDate")
         .WithHeaderText("Ngày bắt dầu")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.startDate) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("endDate").WithColumnName("endDate")
         .WithHeaderText("Ngày kết thúc")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.endDate) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("count").WithColumnName("count")
         .WithHeaderText("Số ngày nghỉ")
         .WithValueExpression((i, c) =>
         {
             int count = (int)((i.endDate - i.startDate) / 1000 / 3600 / 24);
             if (count == 0)
             {
                 return("1 ngày");
             }
             else
             {
                 return(count.ToString() + " ngày");
             }
         });
         cols.Add("VerifyBtn").WithSorting(false)
         .WithHeaderText("")
         .WithHtmlEncoding(false)
         .WithValueExpression((p, c) => c.UrlHelper.Action("VerifyDocument", "DonNghiPhep", new { id = p.C_id }))
         .WithValueTemplate("<a href='{Value}' class='btn btn-primary btn-verify' role='button' data-form-method='post'>Duyệt</a>");
         cols.Add("CancelBtn").WithSorting(false)
         .WithHeaderText("")
         .WithHtmlEncoding(false)
         .WithValueExpression((p, c) => c.UrlHelper.Action("CancelDocument", "DonNghiPhep", new { id = p.C_id }))
         .WithValueTemplate("<a href='{Value}' class='btn btn-danger btn-cancel'>Hủy</a>");
         cols.Add("DetailBtn").WithSorting(false)
         .WithHeaderText("")
         .WithHtmlEncoding(false)
         .WithValueExpression((p, c) => c.UrlHelper.Action("ViewDocument", "DonNghiPhep", new { id = p.C_id }))
         .WithValueTemplate("<a href='{Value}' class='btn btn-primary'>Chi tiết</a>");
     })
                                .WithRetrieveDataMethod((context) =>
     {
         var result          = new QueryResult <Document>();
         NghiphepEntities db = new NghiphepEntities();
         // Query your data here. Obey Ordering, paging and filtering parameters given in the context.QueryOptions.
         // Use Entity Framework, a module from your IoC Container, or any other method.
         // Return QueryResult object containing IEnumerable<YouModelItem>
         var options = context.QueryOptions;
         var query   = (from doc in db.Documents
                        join user in db.Users
                        on doc.createdById equals user.C_id
                        where doc.status == 0
                        select new
         {
             C_id = doc.C_id,
             createdBy = user,
             code = doc.code,
             status = doc.status,
             createdAt = doc.createdAt,
             startDate = doc.startDate,
             endDate = doc.endDate
         });
         System.Diagnostics.Debug.WriteLine(options.GetLimitOffset().HasValue);
         var documents = query.ToList().Select(r => new Document
         {
             C_id      = r.C_id,
             createdBy = r.createdBy,
             code      = r.code,
             status    = r.status,
             createdAt = r.createdAt,
             startDate = r.startDate,
             endDate   = r.endDate
         }).ToList();
         //System.Diagnostics.Debug.WriteLine(options.GetLimitRowcount().Value);
         int count = 0;
         //if (options.GetLimitOffset().HasValue)
         //{
         //    documents = documents.Skip(options.GetLimitOffset().Value).Take(options.GetLimitRowcount().Value).ToList();
         //}
         count = documents.Count;
         return(new QueryResult <Document>()
         {
             Items = documents,
             TotalRecords = count     // if paging is enabled, return the total number of records of all pages
         });
     })
                                );
     MVCGridDefinitionTable.Add("WaitingDocumentGridEm", new MVCGridBuilder <Document>()
                                .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                .WithSorting(sorting: true, defaultSortColumn: "Id", defaultSortDirection: SortDirection.Dsc)
                                //.WithPaging(true, 5)
                                .WithAdditionalQueryOptionNames("search")
                                .AddColumns(cols =>
     {
         // Add your columns here
         cols.Add("code").WithColumnName("code")
         .WithHeaderText("Mã đơn")
         .WithValueExpression(i => i.code);         // use the Value Expression to return the cell text for this column
         cols.Add("status").WithColumnName("status")
         .WithHeaderText("Trạng thái")
         .WithValueExpression((i, c) =>
         {
             if (i.status == 0)
             {
                 return("Chờ duyệt");
             }
             else
             if (i.status == 99)
             {
                 return("Đã duyệt");
             }
             return("Đã hủy");
         });
         cols.Add("createdAt").WithColumnName("createdAt")
         .WithHeaderText("Thời gian tạo")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.createdAt) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("createdBy").WithColumnName("createdBy")
         .WithHeaderText("Người tạo")
         .WithValueExpression(i => i.createdBy.username);
         cols.Add("startDate").WithColumnName("startDate")
         .WithHeaderText("Ngày bắt dầu")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.startDate) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("endDate").WithColumnName("endDate")
         .WithHeaderText("Ngày kết thúc")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.endDate) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("count").WithColumnName("count")
         .WithHeaderText("Số ngày nghỉ")
         .WithValueExpression((i, c) =>
         {
             int count = (int)((i.endDate - i.startDate) / 1000 / 3600 / 24);
             if (count == 0)
             {
                 return("1 ngày");
             }
             else
             {
                 return(count.ToString() + " ngày");
             }
         });
         cols.Add("DetailBtn").WithSorting(false)
         .WithHeaderText("")
         .WithHtmlEncoding(false)
         .WithValueExpression((p, c) => c.UrlHelper.Action("ViewDocument", "DonNghiPhep", new { id = p.C_id }))
         .WithValueTemplate("<a href='{Value}' class='btn btn-primary'>Chi tiết</a>");
     })
                                .WithRetrieveDataMethod((context) =>
     {
         var result          = new QueryResult <Document>();
         NghiphepEntities db = new NghiphepEntities();
         // Query your data here. Obey Ordering, paging and filtering parameters given in the context.QueryOptions.
         // Use Entity Framework, a module from your IoC Container, or any other method.
         // Return QueryResult object containing IEnumerable<YouModelItem>
         var options = context.QueryOptions;
         var query   = (from doc in db.Documents
                        join user in db.Users
                        on doc.createdById equals user.C_id
                        where doc.status == 0
                        select new
         {
             C_id = doc.C_id,
             createdBy = user,
             code = doc.code,
             status = doc.status,
             createdAt = doc.createdAt,
             startDate = doc.startDate,
             endDate = doc.endDate
         });
         System.Diagnostics.Debug.WriteLine(options.GetLimitOffset().HasValue);
         var documents = query.ToList().Select(r => new Document
         {
             C_id      = r.C_id,
             createdBy = r.createdBy,
             code      = r.code,
             status    = r.status,
             createdAt = r.createdAt,
             startDate = r.startDate,
             endDate   = r.endDate
         }).ToList();
         //System.Diagnostics.Debug.WriteLine(options.GetLimitRowcount().Value);
         int count = 0;
         //if (options.GetLimitOffset().HasValue)
         //{
         //    documents = documents.Skip(options.GetLimitOffset().Value).Take(options.GetLimitRowcount().Value).ToList();
         //}
         count = documents.Count;
         return(new QueryResult <Document>()
         {
             Items = documents,
             TotalRecords = count     // if paging is enabled, return the total number of records of all pages
         });
     })
                                );
     MVCGridDefinitionTable.Add("VerifyDocumentGrid", new MVCGridBuilder <Document>()
                                .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                .WithSorting(sorting: true, defaultSortColumn: "Id", defaultSortDirection: SortDirection.Dsc)
                                //.WithPaging(true, 5)
                                .WithAdditionalQueryOptionNames("search")
                                .AddColumns(cols =>
     {
         // Add your columns here
         cols.Add("code").WithColumnName("code")
         .WithHeaderText("Mã đơn")
         .WithValueExpression(i => i.code);         // use the Value Expression to return the cell text for this column
         cols.Add("status").WithColumnName("status")
         .WithHeaderText("Trạng thái")
         .WithValueExpression((i, c) =>
         {
             if (i.status == 0)
             {
                 return("Chờ duyệt");
             }
             else
             if (i.status == 99)
             {
                 return("Đã duyệt");
             }
             return("Đã hủy");
         });
         cols.Add("createdAt").WithColumnName("createdAt")
         .WithHeaderText("Thời gian tạo")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.createdAt) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("createdBy").WithColumnName("createdBy")
         .WithHeaderText("Người tạo")
         .WithValueExpression(i => i.createdBy.username);
         cols.Add("startDate").WithColumnName("startDate")
         .WithHeaderText("Ngày bắt dầu")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.startDate) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("endDate").WithColumnName("endDate")
         .WithHeaderText("Ngày kết thúc")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.endDate) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("count").WithColumnName("count")
         .WithHeaderText("Số ngày nghỉ")
         .WithValueExpression((i, c) =>
         {
             int count = (int)((i.endDate - i.startDate) / 1000 / 3600 / 24);
             if (count == 0)
             {
                 return("1 ngày");
             }
             else
             {
                 return(count.ToString() + " ngày");
             }
         });
     })
                                .WithRetrieveDataMethod((context) =>
     {
         var result          = new QueryResult <Document>();
         NghiphepEntities db = new NghiphepEntities();
         // Query your data here. Obey Ordering, paging and filtering parameters given in the context.QueryOptions.
         // Use Entity Framework, a module from your IoC Container, or any other method.
         // Return QueryResult object containing IEnumerable<YouModelItem>
         var options = context.QueryOptions;
         var query   = (from doc in db.Documents
                        join user in db.Users
                        on doc.createdById equals user.C_id
                        where doc.status == 99
                        select new
         {
             C_id = doc.C_id,
             createdBy = user,
             code = doc.code,
             status = doc.status,
             createdAt = doc.createdAt,
             startDate = doc.startDate,
             endDate = doc.endDate
         });
         System.Diagnostics.Debug.WriteLine(options.GetLimitOffset().HasValue);
         var documents = query.ToList().Select(r => new Document
         {
             C_id      = r.C_id,
             createdBy = r.createdBy,
             code      = r.code,
             status    = r.status,
             createdAt = r.createdAt,
             startDate = r.startDate,
             endDate   = r.endDate
         }).ToList();
         //System.Diagnostics.Debug.WriteLine(options.GetLimitRowcount().Value);
         int count = 0;
         if (options.GetLimitOffset().HasValue)
         {
             documents = documents.Skip(options.GetLimitOffset().Value).Take(options.GetLimitRowcount().Value).ToList();
         }
         count = documents.Count;
         return(new QueryResult <Document>()
         {
             Items = documents,
             TotalRecords = count     // if paging is enabled, return the total number of records of all pages
         });
     })
                                );
     MVCGridDefinitionTable.Add("VerifyDocumentGridEm", new MVCGridBuilder <Document>()
                                .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                .WithSorting(sorting: true, defaultSortColumn: "Id", defaultSortDirection: SortDirection.Dsc)
                                //.WithPaging(true, 5)
                                .WithAdditionalQueryOptionNames("search")
                                .AddColumns(cols =>
     {
         // Add your columns here
         cols.Add("code").WithColumnName("code")
         .WithHeaderText("Mã đơn")
         .WithValueExpression(i => i.code);         // use the Value Expression to return the cell text for this column
         cols.Add("status").WithColumnName("status")
         .WithHeaderText("Trạng thái")
         .WithValueExpression((i, c) =>
         {
             if (i.status == 0)
             {
                 return("Chờ duyệt");
             }
             else
             if (i.status == 99)
             {
                 return("Đã duyệt");
             }
             return("Đã hủy");
         });
         cols.Add("createdAt").WithColumnName("createdAt")
         .WithHeaderText("Thời gian tạo")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.createdAt) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("createdBy").WithColumnName("createdBy")
         .WithHeaderText("Người tạo")
         .WithValueExpression(i => i.createdBy.username);
         cols.Add("startDate").WithColumnName("startDate")
         .WithHeaderText("Ngày bắt dầu")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.startDate) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("endDate").WithColumnName("endDate")
         .WithHeaderText("Ngày kết thúc")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.endDate) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("count").WithColumnName("count")
         .WithHeaderText("Số ngày nghỉ")
         .WithValueExpression((i, c) =>
         {
             int count = (int)((i.endDate - i.startDate) / 1000 / 3600 / 24);
             if (count == 0)
             {
                 return("1 ngày");
             }
             else
             {
                 return(count.ToString() + " ngày");
             }
         });
         cols.Add("DetailBtn").WithSorting(false)
         .WithHeaderText("")
         .WithHtmlEncoding(false)
         .WithValueExpression((p, c) => c.UrlHelper.Action("ViewDocument", "DonNghiPhep", new { id = p.C_id }))
         .WithValueTemplate("<a href='{Value}' class='btn btn-primary'>Chi tiết</a>");
     })
                                .WithRetrieveDataMethod((context) =>
     {
         var result          = new QueryResult <Document>();
         NghiphepEntities db = new NghiphepEntities();
         // Query your data here. Obey Ordering, paging and filtering parameters given in the context.QueryOptions.
         // Use Entity Framework, a module from your IoC Container, or any other method.
         // Return QueryResult object containing IEnumerable<YouModelItem>
         var options = context.QueryOptions;
         var query   = (from doc in db.Documents
                        join user in db.Users
                        on doc.createdById equals user.C_id
                        where doc.status == 99
                        select new
         {
             C_id = doc.C_id,
             createdBy = user,
             code = doc.code,
             status = doc.status,
             createdAt = doc.createdAt,
             startDate = doc.startDate,
             endDate = doc.endDate
         });
         System.Diagnostics.Debug.WriteLine(options.GetLimitOffset().HasValue);
         var documents = query.ToList().Select(r => new Document
         {
             C_id      = r.C_id,
             createdBy = r.createdBy,
             code      = r.code,
             status    = r.status,
             createdAt = r.createdAt,
             startDate = r.startDate,
             endDate   = r.endDate
         }).ToList();
         //System.Diagnostics.Debug.WriteLine(options.GetLimitRowcount().Value);
         int count = 0;
         if (options.GetLimitOffset().HasValue)
         {
             documents = documents.Skip(options.GetLimitOffset().Value).Take(options.GetLimitRowcount().Value).ToList();
         }
         count = documents.Count;
         return(new QueryResult <Document>()
         {
             Items = documents,
             TotalRecords = count     // if paging is enabled, return the total number of records of all pages
         });
     })
                                );
     MVCGridDefinitionTable.Add("CancelDocumentGrid", new MVCGridBuilder <Document>()
                                .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                .WithSorting(sorting: true, defaultSortColumn: "Id", defaultSortDirection: SortDirection.Dsc)
                                //.WithPaging(true, 5)
                                .WithAdditionalQueryOptionNames("search")
                                .AddColumns(cols =>
     {
         // Add your columns here
         cols.Add("code").WithColumnName("code")
         .WithHeaderText("Mã đơn")
         .WithValueExpression(i => i.code);         // use the Value Expression to return the cell text for this column
         cols.Add("status").WithColumnName("status")
         .WithHeaderText("Trạng thái")
         .WithValueExpression((i, c) =>
         {
             if (i.status == 0)
             {
                 return("Chờ duyệt");
             }
             else
             if (i.status == 99)
             {
                 return("Đã duyệt");
             }
             return("Đã hủy");
         });
         cols.Add("createdAt").WithColumnName("createdAt")
         .WithHeaderText("Thời gian tạo")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.createdAt) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("createdBy").WithColumnName("createdBy")
         .WithHeaderText("Người tạo")
         .WithValueExpression(i => i.createdBy.username);
         cols.Add("startDate").WithColumnName("startDate")
         .WithHeaderText("Ngày bắt dầu")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.startDate) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("endDate").WithColumnName("endDate")
         .WithHeaderText("Ngày kết thúc")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.endDate) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("count").WithColumnName("count")
         .WithHeaderText("Số ngày nghỉ")
         .WithValueExpression((i, c) =>
         {
             int count = (int)((i.endDate - i.startDate) / 1000 / 3600 / 24);
             if (count == 0)
             {
                 return("1 ngày");
             }
             else
             {
                 return(count.ToString() + " ngày");
             }
         });
         cols.Add("DetailBtn").WithSorting(false)
         .WithHeaderText("")
         .WithHtmlEncoding(false)
         .WithValueExpression((p, c) => c.UrlHelper.Action("ViewDocument", "DonNghiPhep", new { id = p.C_id }))
         .WithValueTemplate("<a href='{Value}' class='btn btn-primary'>Chi tiết</a>");
     })
                                .WithRetrieveDataMethod((context) =>
     {
         var result          = new QueryResult <Document>();
         NghiphepEntities db = new NghiphepEntities();
         // Query your data here. Obey Ordering, paging and filtering parameters given in the context.QueryOptions.
         // Use Entity Framework, a module from your IoC Container, or any other method.
         // Return QueryResult object containing IEnumerable<YouModelItem>
         var options = context.QueryOptions;
         var query   = (from doc in db.Documents
                        join user in db.Users
                        on doc.createdById equals user.C_id
                        where doc.status == 100
                        select new
         {
             C_id = doc.C_id,
             createdBy = user,
             code = doc.code,
             status = doc.status,
             createdAt = doc.createdAt,
             startDate = doc.startDate,
             endDate = doc.endDate
         });
         System.Diagnostics.Debug.WriteLine(options.GetLimitOffset().HasValue);
         var documents = query.ToList().Select(r => new Document
         {
             C_id      = r.C_id,
             createdBy = r.createdBy,
             code      = r.code,
             status    = r.status,
             createdAt = r.createdAt,
             startDate = r.startDate,
             endDate   = r.endDate
         }).ToList();
         //System.Diagnostics.Debug.WriteLine(options.GetLimitRowcount().Value);
         int count = 0;
         if (options.GetLimitOffset().HasValue)
         {
             documents = documents.Skip(options.GetLimitOffset().Value).Take(options.GetLimitRowcount().Value).ToList();
         }
         count = documents.Count;
         return(new QueryResult <Document>()
         {
             Items = documents,
             TotalRecords = count     // if paging is enabled, return the total number of records of all pages
         });
     })
                                );
     MVCGridDefinitionTable.Add("CancelDocumentGridEm", new MVCGridBuilder <Document>()
                                .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                .WithSorting(sorting: true, defaultSortColumn: "Id", defaultSortDirection: SortDirection.Dsc)
                                //.WithPaging(true, 5)
                                .WithAdditionalQueryOptionNames("search")
                                .AddColumns(cols =>
     {
         // Add your columns here
         cols.Add("code").WithColumnName("code")
         .WithHeaderText("Mã đơn")
         .WithValueExpression(i => i.code);         // use the Value Expression to return the cell text for this column
         cols.Add("status").WithColumnName("status")
         .WithHeaderText("Trạng thái")
         .WithValueExpression((i, c) =>
         {
             if (i.status == 0)
             {
                 return("Chờ duyệt");
             }
             else
             if (i.status == 99)
             {
                 return("Đã duyệt");
             }
             return("Đã hủy");
         });
         cols.Add("createdAt").WithColumnName("createdAt")
         .WithHeaderText("Thời gian tạo")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.createdAt) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("createdBy").WithColumnName("createdBy")
         .WithHeaderText("Người tạo")
         .WithValueExpression(i => i.createdBy.username);
         cols.Add("startDate").WithColumnName("startDate")
         .WithHeaderText("Ngày bắt dầu")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.startDate) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("endDate").WithColumnName("endDate")
         .WithHeaderText("Ngày kết thúc")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.endDate) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("count").WithColumnName("count")
         .WithHeaderText("Số ngày nghỉ")
         .WithValueExpression((i, c) =>
         {
             int count = (int)((i.endDate - i.startDate) / 1000 / 3600 / 24);
             if (count == 0)
             {
                 return("1 ngày");
             }
             else
             {
                 return(count.ToString() + " ngày");
             }
         });
         cols.Add("DetailBtn").WithSorting(false)
         .WithHeaderText("")
         .WithHtmlEncoding(false)
         .WithValueExpression((p, c) => c.UrlHelper.Action("ViewDocument", "DonNghiPhep", new { id = p.C_id }))
         .WithValueTemplate("<a href='{Value}' class='btn btn-primary'>Chi tiết</a>");
     })
                                .WithRetrieveDataMethod((context) =>
     {
         var result          = new QueryResult <Document>();
         NghiphepEntities db = new NghiphepEntities();
         // Query your data here. Obey Ordering, paging and filtering parameters given in the context.QueryOptions.
         // Use Entity Framework, a module from your IoC Container, or any other method.
         // Return QueryResult object containing IEnumerable<YouModelItem>
         var options = context.QueryOptions;
         var query   = (from doc in db.Documents
                        join user in db.Users
                        on doc.createdById equals user.C_id
                        where doc.status == 100
                        select new
         {
             C_id = doc.C_id,
             createdBy = user,
             code = doc.code,
             status = doc.status,
             createdAt = doc.createdAt,
             startDate = doc.startDate,
             endDate = doc.endDate
         });
         System.Diagnostics.Debug.WriteLine(options.GetLimitOffset().HasValue);
         var documents = query.ToList().Select(r => new Document
         {
             C_id      = r.C_id,
             createdBy = r.createdBy,
             code      = r.code,
             status    = r.status,
             createdAt = r.createdAt,
             startDate = r.startDate,
             endDate   = r.endDate
         }).ToList();
         //System.Diagnostics.Debug.WriteLine(options.GetLimitRowcount().Value);
         int count = 0;
         if (options.GetLimitOffset().HasValue)
         {
             documents = documents.Skip(options.GetLimitOffset().Value).Take(options.GetLimitRowcount().Value).ToList();
         }
         count = documents.Count;
         return(new QueryResult <Document>()
         {
             Items = documents,
             TotalRecords = count     // if paging is enabled, return the total number of records of all pages
         });
     })
                                );
     MVCGridDefinitionTable.Add("UserGrid", new MVCGridBuilder <User>()
                                .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                .WithSorting(sorting: true, defaultSortColumn: "Id", defaultSortDirection: SortDirection.Dsc)
                                //.WithPaging(true, 5)
                                .WithAdditionalQueryOptionNames("search")
                                .AddColumns(cols =>
     {
         // Add your columns here
         cols.Add("username").WithColumnName("username")
         .WithHeaderText("Mã nhân viên")
         .WithValueExpression(i => i.username);         // use the Value Expression to return the cell text for this column
         cols.Add("ContractType").WithColumnName("ContractType")
         .WithHeaderText("Ngày phép")
         .WithValueExpression((i, c) =>
         {
             return(i.ContractType.dayOff.ToString());
         });
         cols.Add("dateOff").WithColumnName("dateOff")
         .WithHeaderText("Ngày phép còn lại")
         .WithValueExpression((i, c) =>
         {
             return(i.dayOff.ToString());
         });
         cols.Add("createdAt").WithColumnName("createdAt")
         .WithHeaderText("Thời gian tạo")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.createdAt) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("ContractType").WithColumnName("ContractTypeName")
         .WithHeaderText("Hợp đồng")
         .WithValueExpression((i, c) =>
         {
             return(i.ContractType.name);
         });
         cols.Add("VerifyBtn").WithSorting(false)
         .WithHeaderText("")
         .WithHtmlEncoding(false)
         .WithValueExpression((p, c) => c.UrlHelper.Action("Edit", "NguoiDung", new { id = p.C_id }))
         .WithValueTemplate("<a href='{Value}' class='btn btn-primary' role='button' data-form-method='post'>Sửa</a>");
         cols.Add("CancelBtn").WithSorting(false)
         .WithHeaderText("")
         .WithHtmlEncoding(false)
         .WithValueExpression((p, c) => c.UrlHelper.Action("DeleteUser", "NguoiDung", new { id = p.C_id }))
         .WithValueTemplate("<a href='{Value}' class='btn btn-danger'>Xóa</a>");
     })
                                .WithRetrieveDataMethod((context) =>
     {
         var result          = new QueryResult <User>();
         NghiphepEntities db = new NghiphepEntities();
         // Query your data here. Obey Ordering, paging and filtering parameters given in the context.QueryOptions.
         // Use Entity Framework, a module from your IoC Container, or any other method.
         // Return QueryResult object containing IEnumerable<YouModelItem>
         var options = context.QueryOptions;
         var query   = (from user in db.Users
                        join contract in db.ContractTypes
                        on user.contractId equals contract.C_id
                        where user.isActive == true
                        select new
         {
             C_id = user.C_id,
             username = user.username,
             dayOff = user.dayOff,
             createdAt = user.createdAt,
             ContractType = contract
         });
         System.Diagnostics.Debug.WriteLine(options.GetLimitOffset().HasValue);
         var users = query.ToList().Select(r => new User
         {
             C_id         = r.C_id,
             username     = r.username,
             dayOff       = r.dayOff,
             createdAt    = r.createdAt,
             ContractType = r.ContractType
         }).ToList();
         //System.Diagnostics.Debug.WriteLine(options.GetLimitRowcount().Value);
         int count = 0;
         //if (options.GetLimitOffset().HasValue)
         //{
         //    documents = documents.Skip(options.GetLimitOffset().Value).Take(options.GetLimitRowcount().Value).ToList();
         //}
         System.Diagnostics.Debug.WriteLine(users.Count);
         count = users.Count;
         return(new QueryResult <User>()
         {
             Items = users,
             TotalRecords = count     // if paging is enabled, return the total number of records of all pages
         });
     })
                                );
 }