public static void AddPaginationHeader(this HttpResponse response, int currentPage, int itemsPerPage, int totalitems, int totalPages)
        {
            var paginationHeader = new PaginationHeader(currentPage, itemsPerPage, totalitems, totalPages);

            var options = new JsonSerializerOptions
            {
                PropertyNamingPolicy = JsonNamingPolicy.CamelCase
            };

            response.Headers.Add("Pagination", JsonSerializer.Serialize(paginationHeader, options)); //custom header
            response.Headers.Add("Access-Control-Expose-Headers", "Pagination");                     //pentru a face headerul avalabile trb sa adaugam un clause header
        }
Beispiel #2
0
        public static void AddPagination(this HttpResponse response, int currentPage,
                                         int itemsPerPage, int totalItems, int totalPages)
        {
            var paginationHeader = new PaginationHeader(currentPage, itemsPerPage,
                                                        totalItems, totalPages);
            var calmelCaseFormatter = new JsonSerializerSettings();

            calmelCaseFormatter.ContractResolver = new CamelCasePropertyNamesContractResolver();

            response.Headers.Add("Pagination",
                                 JsonConvert.SerializeObject(paginationHeader, calmelCaseFormatter));
            response.Headers.Add("Access-Control-Expose-Headers", "Pagination");
        }
        public static void AddPaginationHeader(this HttpResponse response, int currentPage, int itemsPerPage, int totalItems, int totalPages)
        {
            var paginationHeader = new PaginationHeader(currentPage, itemsPerPage, totalItems, totalPages);

            var options = new JsonSerializerOptions
            {
                PropertyNamingPolicy = JsonNamingPolicy.CamelCase
            };


            response.Headers.Add("Pagination", JsonSerializer.Serialize(paginationHeader, options));
            response.Headers.Add("Access-Control-Expose-Headers", "Pagination");
        }
        public async Task <IHttpActionResult> Gettransactions([FromUri] TransParams transParams)
        {
            var trans = await _Repo.GetTransaction(transParams);

            var result = _Mapper.Map <IEnumerable <TransactionDto> >(trans);

            var paginationHeader   = new PaginationHeader(trans.CurrentPage, trans.PageSize, trans.TotalCount, trans.TotalPages);
            var camelCaseFormatter = new JsonSerializerSettings();

            camelCaseFormatter.ContractResolver = new CamelCasePropertyNamesContractResolver();
            Request.Properties["Pagination"]    = JsonConvert.SerializeObject(paginationHeader, camelCaseFormatter);

            return(Ok(_Mapper.Map <IEnumerable <TransactionDto> >(trans)));
        }
Beispiel #5
0
        public ResultOfType <PraticienResultModel> GetPraticiens(int take = 0, int skip = 0)
        {
            try
            {
                string local = _ressourceManager.LocalIPAddress();
                string l     = local;
                Logger.LogInfo("Get Praticiens With Take And Skip Parameters avec @IP : Start.");
                PrintSundays();


                var totalCount = _praticienRepository.GetCount();
                var totalPages = (take != 0) ? (int)Math.Ceiling((double)totalCount / take) : 0;

                var paginationHeader = new PaginationHeader
                {
                    TotalCount = totalCount,
                    TotalPages = totalPages
                };

                var praticiens = (take == 0 && skip == 0)
                                   ? _praticienRepository
                                 .GetAll()
                                 .OrderBy(a => a.CreationDate)
                                 .ToList()
                                   : _praticienRepository
                                 .GetAll()
                                 .OrderBy(a => a.CreationDate)
                                 .Skip(skip)
                                 .Take(take)
                                 .ToList();

                var data = new PraticienResultModel();

                praticiens.ForEach(praticien =>
                {
                    var dataModel = PraticienWrapper.ConvertPraticienEntityToDataModel(praticien);
                    data.Items.Add(dataModel);
                });

                data.PaginationHeader = paginationHeader;

                Logger.LogInfo("Get Praticiens With Take And Skip Parameters : End --- Status : OK");
                return(new Return <PraticienResultModel>().OK().WithResult(data));
            }
            catch (Exception exception)
            {
                Logger.LogError("Get Praticiens Exception", exception);
                throw;
            }
        }
Beispiel #6
0
        public static void AddPaginationHeader(this HttpResponse response, int currentPage, int itemsPerPage, int totalItems, int totalPages)
        {
            var paginationHeader = new PaginationHeader(currentPage, itemsPerPage, totalItems, totalPages);

            var options = new JsonSerializerOptions
            {
                PropertyNamingPolicy = JsonNamingPolicy.CamelCase
            };

            response.Headers.Add("Pagination", JsonSerializer.Serialize(paginationHeader, options));

            /*To allow our cors policy to pass header in respose, we have to specify "Access-Control-Expose-Header" exactly same way, if you do spelling mistake then it will cause error.
             */
            response.Headers.Add("Access-Control-Expose-Headers", "Pagination");
        }
Beispiel #7
0
        public static void AddPagination(
            this HttpResponse response, UserParams userParams)
        {
            var paginatinoHeader = new PaginationHeader(userParams.PageNumber,
                                                        userParams.PageSize, userParams.Count, userParams.TotalPages);

            // Serialize the pagination header in JSON format in Camel Case.
            var camelCaseFormatter = new JsonSerializerSettings();

            camelCaseFormatter.ContractResolver = new CamelCasePropertyNamesContractResolver();
            response.Headers.Add("Pagination", JsonConvert.SerializeObject(
                                     paginatinoHeader, camelCaseFormatter));

            // The "Pagination" header is not exposed to client by default
            response.Headers.Add("Access-Control-Expose-Headers", "Pagination");
        }
        public ResultOfType <PatientResultModel> GetPatients(int take = 0, int skip = 0)
        {
            try
            {
                Logger.LogInfo("Get Patients With Take And Skip Parameters : Start.");

                var totalCount = _patientRepository.GetCount();
                var totalPages = (take != 0) ? (int)Math.Ceiling((double)totalCount / take) : 0;

                var paginationHeader = new PaginationHeader
                {
                    TotalCount = totalCount,
                    TotalPages = totalPages
                };

                var patients = (take == 0 && skip == 0)
                                   ? _patientRepository
                               .GetAll()
                               .OrderBy(a => a.CreationDate)
                               .ToList()
                                   : _patientRepository
                               .GetAll()
                               .OrderBy(a => a.CreationDate)
                               .Skip(skip)
                               .Take(take)
                               .ToList();

                var data = new PatientResultModel();

                patients.ForEach(patient =>
                {
                    var dataModel = PatientWrapper.ConvertPatientEntityToDataModel(patient);
                    data.Items.Add(dataModel);
                });

                data.PaginationHeader = paginationHeader;

                Logger.LogInfo("Get Patients With Take And Skip Parameters : End --- Status : OK");
                return(new Return <PatientResultModel>().OK().WithResult(data));
            }
            catch (Exception exception)
            {
                Logger.LogError("Get Patients Exception", exception);
                throw;
            }
        }
Beispiel #9
0
        /// <summary>
        /// Pagination header
        /// </summary>
        /// <param name="response">Response http</param>
        /// <param name="currentPage">Current page</param>
        /// <param name="itemsPerPage">Items per pages</param>
        /// <param name="totalItems">Total items</param>
        /// <param name="totalPages">Total pages</param>
        public static void AddPagination(this HttpResponse response, int currentPage, int itemsPerPage, int totalItems, int totalPages)
        {
            var paginationHeader = new PaginationHeader
            {
                CurrentPage  = currentPage,
                ItemsPerPage = itemsPerPage,
                TotalItems   = totalItems,
                TotalPages   = totalPages
            };
            // This 2 line for .pagination near .result else is just for header
            var camelCaseFormatter = new JsonSerializerSettings();

            camelCaseFormatter.ContractResolver = new CamelCasePropertyNamesContractResolver();
            // Fin comment
            response.Headers.Add("Pagination",
                                 JsonConvert.SerializeObject(paginationHeader, camelCaseFormatter));
            response.Headers.Add("Access-Control-Expose-Headers", "Pagination");
        }
Beispiel #10
0
        public IActionResult GetComments(int userId, int blogId, int postId,
                                         [FromQuery] CommentsResourceParameters commentsResourceParameters,
                                         [FromHeader(Name = nameof(HeaderNames.Accept))] string mediaType)
        {
            if (!_weblogDataRepository.UserExists(userId) ||
                !_weblogDataRepository.BlogExists(blogId) ||
                !_weblogDataRepository.PostExists(postId))
            {
                return(NotFound());
            }

            var commentEntities = _weblogDataRepository.GetComments(postId, commentsResourceParameters);

            var commentsToReturn = _mapper.Map <IEnumerable <CommentDto> >(commentEntities);

            Response.Headers.Add(PaginationHeader <Comment> .Get(commentEntities));

            var includeLinks = MediaTypes.IncludeLinks(mediaType);

            if (!includeLinks)
            {
                return(Ok(commentsToReturn));
            }

            var commentsWithLinks = commentsToReturn.Select(comment =>
            {
                var links = CreateLinksForComment(userId, blogId, postId, comment.CommentId, comment.UserId);

                return(new CommentDtoWithLinks(comment, links));
            });

            var collectionToReturn = new
            {
                comments = commentsWithLinks,
                links    = LinksForCollection.Create(
                    CreateCommentsResourceUri,
                    new int[] { userId, blogId, postId },
                    commentsResourceParameters,
                    commentEntities.HasPrevious,
                    commentEntities.HasNext)
            };

            return(Ok(collectionToReturn));
        }
Beispiel #11
0
        public IActionResult GetAllPostsForUser(int userId,
                                                [FromQuery] PostsResourceParameters postsResourceParameters,
                                                [FromHeader(Name = nameof(HeaderNames.Accept))] string mediaType)
        {
            if (!_weblogDataRepository.UserExists(userId))
            {
                return(NotFound());
            }

            var postEntities = _weblogDataRepository.GetAllPostsForUser(userId, postsResourceParameters);

            var postsToReturn = _mapper.Map <IEnumerable <PostDto> >(postEntities);

            Response.Headers.Add(PaginationHeader <Post> .Get(postEntities));

            var includeLinks = MediaTypes.IncludeLinks(mediaType);

            if (!includeLinks)
            {
                return(Ok(postsToReturn));
            }

            var postsWithLinks = postsToReturn.Select(post =>
            {
                var links = PostsController.CreateLinksForPost(
                    Url, userId, post.BlogId, post.PostId);

                return(new PostDtoWithLinks(post, links));
            });

            var collectionToReturn = new
            {
                posts = postsWithLinks,
                links = LinksForCollection.Create(
                    CreatePostsResourceUri,
                    Array.Empty <int>(),
                    postsResourceParameters,
                    postEntities.HasPrevious,
                    postEntities.HasNext)
            };

            return(Ok(collectionToReturn));
        }
Beispiel #12
0
        //public ResultOfType<bool> CreneauHasRendezVous(string heureDebut, string heureFin, string currentDate, string emailPraticien)
        //{
        //    Logger.LogInfo("Get Creneaux With Take And Skip Parameters : Start.");
        //    //Récupérer par praticien , heure début et date donné
        //    var creneau =
        //        _creneauxRepository.GetAll()
        //            .FirstOrDefault(p => p.Praticien.Cin.Equals(praticien) && p.HeureDebut.Equals(heureDebut) && p.CurrentDate.Equals(currentDate));
        //}

        public ResultOfType <CreneauResultModel> GetCreneauxByPraticien(string email, int take = 0, int skip = 0)
        {
            try
            {
                Logger.LogInfo("Get Creneaux With Take And Skip Parameters : Start.");

                var totalCount = _praticienRepository.GetCount();
                var totalPages = (take != 0) ? (int)Math.Ceiling((double)totalCount / take) : 0;

                var paginationHeader = new PaginationHeader
                {
                    TotalCount = totalCount,
                    TotalPages = totalPages
                };

                var creneaux = (take == 0 && skip == 0)
                    ? _creneauxRepository
                               .GetAll().Where(p => p.Praticien.Email == email)
                               .ToList()
                    : _creneauxRepository
                               .GetAll().Where(p => p.Praticien.Email == email)
                               .Skip(skip)
                               .Take(take)
                               .ToList();
                var data = new CreneauResultModel();
                creneaux.ForEach(creneau =>
                {
                    var dataModel = CreneauWrapper.ConvertCreneauEntityToDataModel(creneau);
                    data.Items.Add(dataModel);
                });

                data.PaginationHeader = paginationHeader;

                Logger.LogInfo("Get Creneaux by praticien With Take And Skip Parameters : End --- Status : OK");
                return(new Return <CreneauResultModel>().OK().WithResult(data));
            }
            catch (Exception exception)
            {
                Logger.LogError("Get Praticiens Exception", exception);
                throw;
            }
        }
Beispiel #13
0
        public IActionResult GetBlogs(int userId,
                                      [FromQuery] BlogsResourceParameters blogsResourceParameters,
                                      [FromHeader(Name = nameof(HeaderNames.Accept))] string mediaType)
        {
            if (!_weblogDataRepository.UserExists(userId))
            {
                return(NotFound());
            }

            var blogEntities = _weblogDataRepository.GetBlogs(userId, blogsResourceParameters);

            var blogsToReturn = _mapper.Map <IEnumerable <BlogDto> >(blogEntities);

            Response.Headers.Add(PaginationHeader <Blog> .Get(blogEntities));

            var includeLinks = MediaTypes.IncludeLinks(mediaType);

            if (!includeLinks)
            {
                return(Ok(blogsToReturn));
            }

            var blogsWithLinks = blogsToReturn.Select(blog =>
            {
                var links = CreateLinksForBlog(Url, userId, blog.BlogId);

                return(new BlogDtoWithLinks(blog, links));
            });

            var collectionToReturn = new
            {
                blogs = blogsWithLinks,
                links = LinksForCollection.Create(
                    CreateBlogsResourceUri,
                    new int[] { userId },
                    blogsResourceParameters,
                    blogEntities.HasPrevious,
                    blogEntities.HasNext)
            };

            return(Ok(collectionToReturn));
        }
Beispiel #14
0
        public async Task <IActionResult> GetUsers([FromQuery] UserParams userParams)
        {
            // List<User> a = new List<User>();
            // Console.WriteLine(a.Count());

            // if(HttpContext.Session.GetInt32("id") != null)
            // {
            //     var i = HttpContext.Session.GetInt32("id");
            //     return Ok(i);
            // }

            DatingRepository _rrepo = new DatingRepository(this._options);

            var currentUserId = int.Parse(HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value);

            // var userFromRepo = await _repo.GetUser(currentUserId);
            userParams.UserId = currentUserId;
            // if(string.IsNullOrEmpty(userParams.Gender))
            // {
            //     userParams.Gender = userFromRepo.Gender == "male" ? "female" : "male";
            // }

            var users = await _rrepo.GetUsers(userParams);

            var userToReturn = _mapper.Map <IEnumerable <UserForListDto> >(users.res);

            // var a = userToReturn.AsQueryable().OrderBy(u => u.Gender);
            Response.AddPagination(users.CurrentPage, users.PageSize, users.TotalCount, users.TotalPage);
            var page = new PaginationHeader(users.CurrentPage, users.PageSize, users.TotalCount, users.TotalPage);

            // return Ok(userToReturn);
            return(Ok(new
            {
                page,
                userToReturn
            }));
        }
Beispiel #15
0
        public IActionResult GetUsers(
            [FromQuery] UsersResourceParameters usersResourceParameters,
            [FromHeader(Name = nameof(HeaderNames.Accept))] string mediaType)
        {
            var userEntities = _weblogDataRepository.GetUsers(usersResourceParameters);

            var usersToReturn = _mapper.Map <IEnumerable <UserDto> >(userEntities);

            Response.Headers.Add(PaginationHeader <User> .Get(userEntities));

            var includeLinks = MediaTypes.IncludeLinks(mediaType);

            if (!includeLinks)
            {
                return(Ok(usersToReturn));
            }

            var usersWithLinks = usersToReturn.Select(user =>
            {
                var links = CreateLinksForUser(user.UserId);

                return(new UserDtoWithLinks(user, links));
            });

            var resourceToReturn = new
            {
                users = usersWithLinks,
                links = LinksForCollection.Create(CreateUsersResourceUri,
                                                  Array.Empty <int>(),
                                                  usersResourceParameters,
                                                  userEntities.HasPrevious,
                                                  userEntities.HasNext)
            };

            return(Ok(resourceToReturn));
        }
Beispiel #16
0
        public ResultOfType <PraticienResultModel> GetPraticiensOpenSearch(string q, int take = 0, int skip = 0)
        {
            try
            {
                Logger.LogInfo("GetPraticiensOpenSearch : Start.");

                if (string.IsNullOrWhiteSpace(q))
                {
                    return(new Return <PraticienResultModel>()
                           .Error()
                           .AsValidationFailure(null, "Vous n'avez rien introduit pour faire la recherche.", "q")
                           .WithDefaultResult());
                }
                q = Helpers.Common.ValidateQueryString(q);
                var result = _searchEngine.Search(q);


                var data       = new PraticienResultModel();
                var totalCount = result.Count();
                var totalPages = (take != 0) ? (int)Math.Ceiling((double)totalCount / take) : 0;

                var paginationHeader = new PaginationHeader
                {
                    TotalCount = totalCount,
                    TotalPages = totalPages
                };

                if (take != 0 || skip != 0)
                {
                    result = result.OrderBy(r => r.Cin).Skip(skip).Take(take).ToList();
                }

                result.ForEach(praticien =>
                {
                    string logLat = "";

                    var praticienData = new PraticienResultDataModel
                    {
                        Cin                  = praticien.Cin ?? "",
                        Adresse              = praticien.Adresse ?? "",
                        Conventionne         = praticien.Conventionne ?? "",
                        Cursus               = praticien.Cursus ?? "",
                        Delegation           = praticien.Delegation ?? "",
                        Diplomes             = praticien.Diplomes ?? "",
                        Email                = praticien.Email ?? "",
                        EstActive            = praticien.EstActive ?? "",
                        Fax                  = praticien.Fax ?? "",
                        Formations           = praticien.Formations ?? "",
                        Gouvernerat          = praticien.Gouvernerat ?? "",
                        InformationsPratique = praticien.InformationsPratique ?? "",
                        LanguesParles        = praticien.LanguesParles ?? "",
                        MoyensPaiement       = praticien.MoyensPaiement ?? "",
                        NomPrenom            = praticien.NomPrenom ?? "",
                        ParcoursHospitalier  = praticien.ParcoursHospitalier ?? "",
                        Password             = praticien.Password ?? "",
                        PresentationCabinet  = praticien.PresentationCabinet ?? "",
                        PrixConsultation     = praticien.PrixConsultation ?? "",
                        Publication          = praticien.Publication ?? "",
                        ReseauxSociaux       = praticien.ReseauxSociaux ?? "",
                        Telephone            = praticien.Telephone ?? "",
                        Specialite           = praticien.Specialite,
                    };

                    data.Items.Add(praticienData);
                    data.PaginationHeader = paginationHeader;
                });
                Logger.LogInfo(string.Format("GetPraticiensOpenSearch : End ."));

                return(new Return <PraticienResultModel>().OK().WithResult(data));
            }
            catch (Exception ex)
            {
                Logger.LogInfo(string.Format("GetPraticiensOpenSearch : End with Error --- : {0}", ex.Message));
                throw;
            }
        }
Beispiel #17
0
 /// <summary>
 /// Adds a pagination header.
 /// </summary>
 ///
 /// <param name="response">The response.</param>
 /// <param name="header">The header.</param>
 public static void AddPaginationHeader(this HttpResponse response, PaginationHeader header)
 {
     response.Headers.Add("Pagination", JsonConvert.SerializeObject(header, JsonFormatter));
     response.Headers.Add("Access-Control-Expose-Headers", "Pagination");
 }
        public ResultOfType <PatientResultModel> GetPatientsParPraticien(string praticien, int take = 0, int skip = 0)
        {
            try
            {
                Logger.LogInfo("GetPatientsParPraticien : Start .");

                if (string.IsNullOrEmpty(praticien))
                {
                    return(new Return <PatientResultModel>()
                           .Error().AsValidationFailure(null, "Veuillez introduire votre praticien Cin.", "praticien")
                           .WithDefaultResult());
                }
                var totalCount = _rendezVousRepository.GetCount();
                var totalPages = (take != 0) ? (int)Math.Ceiling((double)totalCount / take) : 0;

                var paginationHeader = new PaginationHeader
                {
                    TotalCount = totalCount,
                    TotalPages = totalPages
                };
                var patients = (take == 0 && skip == 0)
                                  ? _rendezVousRepository
                               .GetAll()
                               .Where(x => x.Praticien.Email.Equals(praticien))
                               .Select(x => x.Patient)
                               .ToList()
                               .Distinct()
                                  : _rendezVousRepository
                               .GetAll()
                               .Where(x => x.Praticien.Email.Equals(praticien))
                               .Select(x => x.Patient)
                               .Skip(skip)
                               .Take(take)
                               .Distinct()
                               .ToList();

                var data = new PatientResultModel();

                patients.ForEach(account =>
                {
                    var patient = _patientRepository.GetAll().FirstOrDefault(p => p.Email.Equals(account.Email));
                    if (patient != null)
                    {
                        var dataModel = PatientWrapper.ConvertPatientEntityToDataModel(patient);
                        data.Items.Add(dataModel);
                    }
                    else
                    {
                        //le patient peut être un praticien donc on sélectionne même les praticiens
                        var prat      = _praticienRepository.GetAll().FirstOrDefault(p => p.Email.Equals(account.Email));
                        var dataModel = PatientWrapper.ConvertPratientEntityToDataModel(prat);
                        data.Items.Add(dataModel);
                    }
                });

                data.PaginationHeader = paginationHeader;

                Logger.LogInfo("Get Patients With Take And Skip Parameters : End --- Status : OK");
                return(new Return <PatientResultModel>().OK().WithResult(data));
            }
            catch (Exception)
            {
                throw;
            }
        }
        public static PaginationHeader SetPaginationHeader()
        {
            var paged = new PaginationHeader(1, 2, 3, 4);

            return(paged);
        }
Beispiel #20
0
        public ResultOfType <PraticienResultModel> SearchForPraticien(string gouvernerat, string specialite,
                                                                      string nomPraticien, int take = 0, int skip = 0)
        {
            try
            {
                Logger.LogInfo("Search For Praticien With Take And Skip Parameters : Start.");
                var praticiens = (take == 0 && skip == 0)
                                 ? _praticienRepository
                                 .GetAll()
                                 .OrderBy(a => a.CreationDate)
                                 .ToList()
                                 : _praticienRepository
                                 .GetAll()
                                 .OrderBy(a => a.CreationDate)
                                 .Skip(skip)
                                 .Take(take)
                                 .ToList();

                if (string.IsNullOrEmpty(gouvernerat) && string.IsNullOrEmpty(specialite) &&
                    string.IsNullOrEmpty(nomPraticien))
                {
                    //Get aall
                    return(GetPraticiens(take, skip));
                }
                else
                {
                    if (!string.IsNullOrEmpty(gouvernerat) && !gouvernerat.Equals("undefined"))
                    {
                        praticiens = praticiens.Where(p => p.Gouvernerat.Trim().ToLower().Equals(gouvernerat.Trim().ToLower())).ToList();
                    }
                    if (!string.IsNullOrEmpty(specialite) && !specialite.Equals("undefined"))
                    {
                        praticiens = praticiens.Where(p => p.Specialite.Trim().ToLower().Equals(specialite.Trim().ToLower())).ToList();
                    }
                    if (!string.IsNullOrEmpty(nomPraticien) && !nomPraticien.Equals("undefined"))
                    {
                        praticiens = praticiens.Where(p => p.NomPrenom.Trim().ToLower().Contains(nomPraticien.Trim().ToLower())).ToList();
                    }

                    var totalCount = praticiens.Count;
                    var totalPages = (take != 0) ? (int)Math.Ceiling((double)totalCount / take) : 0;

                    var paginationHeader = new PaginationHeader
                    {
                        TotalCount = totalCount,
                        TotalPages = totalPages
                    };
                    var data = new PraticienResultModel();

                    praticiens.ForEach(praticien =>
                    {
                        var dataModel = PraticienWrapper.ConvertPraticienEntityToDataModel(praticien);
                        data.Items.Add(dataModel);
                    });

                    data.PaginationHeader = paginationHeader;

                    Logger.LogInfo("Get Praticiens With Take And Skip Parameters : End --- Status : OK");
                    return(new Return <PraticienResultModel>().OK().WithResult(data));
                }
            }
            catch (Exception ex)
            {
                throw;
            }
        }
        public async Task <IActionResult> GetDashboardInfo()
        {
            var myAssigned = _ticketUoW
                             .Tickets
                             .Get(x => x.AssignedTo == int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value) &&
                                  x.StatusId != 3 && x.StatusId != 4)
                             .Include(x => x.Project)
                             .OrderByDescending(x => x.TicketId);

            var pagedMyAssigned = await PagedList <Tickets> .CreateAsync(myAssigned, 1, 10);

            var mappedMyAssigned     = _mapper.Map <IEnumerable <TicketForDashboardDto> >(pagedMyAssigned);
            var myAssignedPagination = new PaginationHeader(1, 10, pagedMyAssigned.TotalCount, pagedMyAssigned.TotalPages);

            var recentTickets = _ticketUoW
                                .Tickets
                                .GetAll()
                                .Include(x => x.Project)
                                .OrderByDescending(x => x.TicketId);

            var pagedRecentTickets = await PagedList <Tickets> .CreateAsync(recentTickets, 1, 10);

            var mappedRecentTickets     = _mapper.Map <IEnumerable <TicketForDashboardDto> >(pagedRecentTickets);
            var recentTicketsPagination = new PaginationHeader(1, 10, pagedRecentTickets.TotalCount, pagedRecentTickets.TotalPages);

            var resolved = _ticketUoW
                           .Tickets
                           .Get(x => x.StatusId == 3 || x.StatusId == 4)
                           .Include(x => x.Project)
                           .OrderByDescending(x => x.TicketId);

            var pagedResolved = await PagedList <Tickets> .CreateAsync(resolved, 1, 10);

            var mappedResolved     = _mapper.Map <IEnumerable <TicketForDashboardDto> >(pagedResolved);
            var resolvedPagination = new PaginationHeader(1, 10, pagedResolved.TotalCount, pagedResolved.TotalPages);

            var timeline = _ticketUoW
                           .Timeline
                           .GetAll()
                           .OrderByDescending(x => x.TimelineId)
                           .Include(x => x.DoneByNavigation);

            var pagedTimeline = await PagedList <Timeline> .CreateAsync(timeline, 1, 10);

            var mappedTimeline     = _mapper.Map <IEnumerable <TimelineDto> >(pagedTimeline);
            var timelinePagination = new PaginationHeader(1, 10, pagedTimeline.TotalCount, pagedTimeline.TotalPages);

            var dashboard = new DashboardDto()
            {
                MyAssigned              = mappedMyAssigned,
                MyAssignedPagination    = myAssignedPagination,
                RecentTickets           = mappedRecentTickets,
                RecentTicketsPagination = recentTicketsPagination,
                Resolved           = mappedResolved,
                ResolvedPagination = resolvedPagination,
                Timeline           = mappedTimeline,
                TimelinePagination = timelinePagination
            };

            return(Ok(dashboard));
        }