//
        // 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 }));
            }
        }