// // GET: Marks/CreateUserMark public async Task <ActionResult> Create(int?id) { int FindId; var Id = User.Identity.GetUserId <int>(); var roles = await UserManager.GetRolesAsync(Id); if (id != null) { if (roles.Contains("admin")) { FindId = id.Value; } else { if (id.Value == Id) { FindId = Id; } else { return(RedirectToAction("Login", "Account")); } } } else { FindId = Id; } CreateMarkModel Create; using (var db = new ApplicationDbContext()) { var ServerDateTime = db.Database.SqlQuery <DateTime>("SELECT 'now'::timestamp(0)").First(); var mymark = (from b in db.Marks.Where(x => x.UserId == Id).ToList() orderby b.Coming_Date descending select new Marks { Id = b.Id, Coming_Date = b.Coming_Date, Out_Date = b.Out_Date }).First(); if (mymark.Out_Date == null && mymark.Coming_Date.Month == DateTime.Now.Month && mymark.Coming_Date.Day < DateTime.Now.Day) { Create = new CreateMarkModel { Date = mymark.Coming_Date.AddHours(+9), warning = true, ServerDate = ServerDateTime }; } else { Create = new CreateMarkModel { Date = DateTime.Now, warning = false, ServerDate = ServerDateTime }; } } AppUser user = await UserManager.FindByIdAsync(FindId); ViewBag.UserName = user.UserName; ViewBag.UserId = user.Id; return(View(Create)); }
public async Task <ActionResult> Create(int?id, CreateMarkModel model) { int AuthorId; var Id = User.Identity.GetUserId <int>(); var roles = await UserManager.GetRolesAsync(Id); if (id != null) { if (roles.Contains("admin")) { AuthorId = Id; Id = id.Value; } else { if (id.Value == Id) { AuthorId = id.Value; Id = id.Value; } else { return(RedirectToAction("Login", "Account")); } } } else { AuthorId = Id; } if (ModelState.IsValid) { using (var db = new ApplicationDbContext()) { //var ServerDateTime = db.Database.SqlQuery<DateTime>("SELECT localtimestamp;").First(); var ServerDateTime = db.Database.SqlQuery <DateTime>("SELECT 'now'::timestamp(0)").First(); Marks mymark, newmark; if (db.Marks.Where(x => x.UserId == Id).ToList().Count() != 0) { mymark = (from b in db.Marks.Where(x => x.UserId == Id).ToList() orderby b.Coming_Date descending select new Marks { Id = b.Id, Coming_Date = b.Coming_Date, Out_Date = b.Out_Date }).First(); } else { mymark = new Marks { UserId = Id, Coming_Date = model.Date, Out_Date = null, AuthorId = AuthorId }; newmark = mymark; db.Marks.Add(newmark); } var date = model.Date; if (date.Date == ServerDateTime.Date && date.Hour == ServerDateTime.Hour && date.Minute == ServerDateTime.Minute) { if (mymark.Out_Date == null) { newmark = db.Marks.Where(x => x.Coming_Date == mymark.Coming_Date).FirstOrDefault(); newmark.Out_Date = model.Date; } else { if (mymark.Coming_Date.Date != ServerDateTime.Date) { newmark = new Marks { UserId = Id, Coming_Date = model.Date, Out_Date = null, AuthorId = AuthorId }; db.Marks.Add(newmark); } else { return(RedirectToAction("Create", new { id = Id })); } } db.SaveChanges(); return(RedirectToAction("Create", new { id = Id })); } else { if (model.warning == true) { if (mymark.Out_Date == null && model.Date.Day == mymark.Coming_Date.Day && model.Date.Month == ServerDateTime.Date.Month) { newmark = db.Marks.Where(x => x.Coming_Date == mymark.Coming_Date).FirstOrDefault(); newmark.Out_Date = model.Date; } else { return(RedirectToAction("Create", new { id = Id })); } db.SaveChanges(); return(RedirectToAction("Create", new { id = Id })); } return(RedirectToAction("Create", new { id = Id })); } } } else { return(RedirectToAction("Create", new { id = Id })); } }