예제 #1
0
 public async Task <JsonResult> GetAllLeads(bool includeDeleted = false) => await JsonAsync(_leadService.GetAllLeadsAsync(includeDeleted));
예제 #2
0
        /// <summary>
        /// Get all user task by name and assigned task
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="userName"></param>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task <ResultModel <PagedResult <GetTaskViewModel> > > GetAllUserTasksAsync(Guid userId, string userName, PageRequest request)
        {
            if (userId == Guid.Empty)
            {
                return(ExceptionMessagesEnum.NullParameter.ToErrorModel <PagedResult <GetTaskViewModel> >());
            }


            var allLeadsRequest = (await _leadService.GetAllLeadsAsync(false)).Result.ToList();


            var query = _context.Tasks
                        .Include(x => x.AssignedUsers)
                        .Include(i => i.TaskType)
                        .Where(x => (x.UserId == userId || x.AssignedUsers.Any(c => c.UserId.Equals(userId))) ||
                               (x.Author == userName));


            if (request.PageRequestFilters.Select(s => s.Propriety).Contains("AssignedUsers"))
            {
                query = await CustomFilterTask(query, request);

                request.PageRequestFilters = request.PageRequestFilters.Where(s => s.Propriety != "AssignedUsers");
            }

            var queryTest = query
                            .Select(s => new GetTaskViewModel
            {
                Id           = s.Id,
                TaskNumber   = s.TaskNumber,
                StartDate    = s.StartDate,
                EndDate      = s.EndDate,
                Description  = s.Description,
                Name         = s.Name,
                Status       = s.Status,
                TaskPriority = s.TaskPriority,
                IsDeleted    = s.IsDeleted,
                UserId       = s.UserId,
                Author       = s.Author,
                LeadId       = s.LeadId,
                TaskTypeId   = s.TaskTypeId,
                TaskType     = s.TaskType,
                LeadName     = s.LeadId.HasValue ?
                               allLeadsRequest.FirstOrDefault(i => i.Id == s.LeadId.Value) == null ? "" : allLeadsRequest.FirstOrDefault(i => i.Id == s.LeadId.Value).Name
                        : "",
            });

            var paginatedResult = await queryTest.GetPagedAsync(request);


            var test = paginatedResult.Result;

            foreach (var item in test)
            {
                var task = await query.FirstOrDefaultAsync(x => x.Id == item.Id);

                if (task == null)
                {
                    continue;
                }

                item.ModifiedBy = task.ModifiedBy.IsNullOrEmpty()
                    ? task.Author
                    : task.ModifiedBy;
                item.UserTeam    = task.AssignedUsers?.Select(x => x.UserId);
                item.AccessLevel = GetTaskAccessLevel(task, userId).ToString();
                item.StatusItem  = new TaskEnumItem {
                    Value = (int)task.Status, Text = task.Status.ToString()
                };
                item.TaskPriorityItem = new TaskEnumItem {
                    Value = (int)task.TaskPriority, Text = task.TaskPriority.ToString()
                };
                item.AssignedUsers = GetUsersByListId(task.AssignedUsers?.Select(x => x.UserId));
            }


            paginatedResult.Result = test;

            //var pageResult = await query.GetPagedAsync(request);

            return(new SuccessResultModel <PagedResult <GetTaskViewModel> >(paginatedResult));
        }