public async Task <IActionResult> ChooseTask(int StTaskID, string returnUrl)
        {
            var user = await Manager.FindByNameAsync(User.Identity.Name);

            lock (TaskLocker)
            {
                var task = Docs.Tasks.FirstOrDefault(x => x.StTaskID == StTaskID && x.UserID == null);

                if (task != null)
                {
                    var isNoElseTasksForThisUser = Docs.Tasks
                                                   .FirstOrDefault(x => x.UserID == user.Id && x.DocPageID == task.DocPageID) == null;
                    var isDocPageFromThisGroup = Docs.Pages
                                                 .FirstOrDefault(x => x.DocPageID == task.DocPageID).GroupID == (user as StudentUser).GroupID;
                    if (isNoElseTasksForThisUser && isDocPageFromThisGroup)
                    {
                        task.UserID = user.Id;
                        Docs.UpdateTask(task);
                    }
                    else
                    {
                        return(View("TaskError", returnUrl));
                    }
                }
                else
                {
                    return(View("TaskError", returnUrl));
                }
                return(LocalRedirect(returnUrl));
            }
        }
Example #2
0
        public async Task <IActionResult> Perform(PerformViewModel Model)
        {
            var student = await Manager.FindByNameAsync(User.Identity.Name);

            var task = Docs.Tasks.FirstOrDefault(x => x.StTaskID == Model.Answer.StTaskID && x.UserID == Model.Answer.UserID && Model.Answer.UserID == student.Id);

            if (task == null)
            {
                return(LocalRedirect(Model.returnUrl));
            }
            task.IsChecked = false;
            Docs.UpdateTask(task);
            Docs.AddAnswer(Model.Answer);
            return(LocalRedirect(Model.returnUrl));
        }
Example #3
0
        public IActionResult Rate(RateTaskViewModel model)
        {
            var task = Documentation.Tasks.FirstOrDefault(x => x.StTaskID == model.TaskID);

            if (task.MaxCost < model.CurrentRate)
            {
                ModelState.AddModelError("", "Rate cannot be more than " + model.MaxRate);
            }
            if (ModelState.IsValid)
            {
                var oldrate = task.CurrentCost;

                task.CurrentCost = model.CurrentRate;
                task.IsChecked   = true;
                Documentation.UpdateTask(task);
                if (model.CurrentRate != oldrate)
                {
                    var answer = new Answer()
                    {
                        AnswerDate = DateTime.Now,
                        StTaskID   = task.StTaskID,
                        TextData   = $@"Оцінка була змінена з {oldrate} до {model.CurrentRate}",
                        UserID     = Context.Users.FirstOrDefault(x => x.UserName == User.Identity.Name).Id
                    };

                    Documentation.AddAnswer(answer);
                }
                if (!String.IsNullOrEmpty(model.Description))
                {
                    var answer = new Answer()
                    {
                        AnswerDate = DateTime.Now,
                        StTaskID   = task.StTaskID,
                        TextData   = model.Description,
                        UserID     = Context.Users.FirstOrDefault(x => x.UserName == User.Identity.Name).Id
                    };

                    Documentation.AddAnswer(answer);
                }
                return(LocalRedirect(model.returnUrl));
            }
            return(View(model));
        }