Example #1
0
        public static CanOpenTaskHead CheckUserAdmin(this CanOpenTaskHead model)
        {
            if (model.CanOpen)
            {
                return(model);
            }

            model.CanOpen = model.User.IsAdmin;
            return(model);
        }
Example #2
0
        public static CanOpenTaskHead CheckType(this CanOpenTaskHead model)
        {
            if (model.CanOpen)
            {
                return(model);
            }

            var userTaskHead = model.UserTaskHeads.FirstOrDefault(c => c.Id == model.UserTaskHeadId);

            model.CanOpen = userTaskHead != null && userTaskHead.TaskHead.Type != TaskType.Code;

            return(model);
        }
Example #3
0
        public static CanOpenTaskHead CheckOnAlreadyStarted(this CanOpenTaskHead model)
        {
            if (model.CanOpen)
            {
                return(model);
            }

            var userTaskHead = model.UserTaskHeads.FirstOrDefault(c => c.Id == model.UserTaskHeadId);

            model.CanOpen = userTaskHead != null && !userTaskHead.StartedDt.HasValue;

            return(model);
        }
Example #4
0
        public static CanOpenTaskHead CheckOnPassed(this CanOpenTaskHead model)
        {
            if (model.CanOpen)
            {
                return(model);
            }

            var userTaskHead = model.UserTaskHeads.FirstOrDefault(c => c.Id == model.UserTaskHeadId);

            model.CanOpen = userTaskHead != null && userTaskHead.IsPassed;

            return(model);
        }
Example #5
0
        public static CanOpenTaskHead CheckFirst(this CanOpenTaskHead model)
        {
            if (model.CanOpen)
            {
                return(model);
            }

            var firstTaskHead = model.UserTaskHeads.FirstOrDefault();
            var isFirst       = firstTaskHead != null && firstTaskHead.Id == model.UserTaskHeadId;

            model.CanOpen = isFirst;
            return(model);
        }
Example #6
0
        public static CanOpenTaskHead CheckAllPreviousPassed(this CanOpenTaskHead model)
        {
            if (model.CanOpen)
            {
                return(model);
            }

            var allPreviousPassed = model.UserTaskHeads
                                    .Where(u => u.TaskHead.Type == TaskType.Code)
                                    .TakeWhile(c => c.Id != model.UserTaskHeadId)
                                    .All(c => c.IsPassed);

            model.CanOpen = allPreviousPassed;
            return(model);
        }
Example #7
0
        public async Task <bool> CanOpen(Guid userId, int userTaskHeadId)
        {
            var userTaskHeads = (await GetUserTaskHeadsByUserId(userId)).ToList();
            var user          = await _repository.Find <User>(u => u.Id == userId);

            var canOpenTaskHead = new CanOpenTaskHead
            {
                CanOpen        = false,
                UserTaskHeadId = userTaskHeadId,
                UserTaskHeads  = userTaskHeads,
                User           = user
            };

            canOpenTaskHead = canOpenTaskHead
                              .CheckOnAlreadyStarted();

            return(canOpenTaskHead.CanOpen);
        }