public IHttpActionResult GetPageForLoggedEmployee([FromUri] PageQuery query, string id = "",
                                                          PackageStatusFilter status           = PackageStatusFilter.All, string employeeId = "")
        {
            var packages = context.Set <Package>().AsQueryable();

            var userId   = User.Identity.GetUserId();
            var employee = context.Employees.AsQueryable().FirstOrDefault(e => e.User.Id == userId);

            if (employee != null)
            {
                packages = employee.Packages.AsQueryable();
            }

            packages = ApplyFilters(packages, id, status);
            var dtos = packages.ProjectTo <PackageDto>();

            return(Ok(PagingHelper.GetPagedResult(dtos, query)));
        }
        public IHttpActionResult GetPage([FromUri] PageQuery query, string id = "",
            PackageStatusFilter status = PackageStatusFilter.All, string employeeId = "")
        {
            var packages = context.Set<Package>().AsQueryable();

            if (!string.IsNullOrEmpty(employeeId))
            {
                int numericEmployeeId;
                if (int.TryParse(employeeId, out numericEmployeeId))
                {
                    var employee = context.Employees.Find(numericEmployeeId);
                    if (employee != null)
                    {
                        packages = employee.Packages.AsQueryable();
                    }
                }
            }
            packages = ApplyFilters(packages, id, status);
            var dtos = packages.ProjectTo<PackageDto>();
            return Ok(PagingHelper.GetPagedResult(dtos, query));
        }
        public IHttpActionResult GetPage([FromUri] PageQuery query, string id = "",
                                         PackageStatusFilter status           = PackageStatusFilter.All, string employeeId = "")
        {
            var packages = context.Set <Package>().AsQueryable();

            if (!string.IsNullOrEmpty(employeeId))
            {
                int numericEmployeeId;
                if (int.TryParse(employeeId, out numericEmployeeId))
                {
                    var employee = context.Employees.Find(numericEmployeeId);
                    if (employee != null)
                    {
                        packages = employee.Packages.AsQueryable();
                    }
                }
            }
            packages = ApplyFilters(packages, id, status);
            var dtos = packages.ProjectTo <PackageDto>();

            return(Ok(PagingHelper.GetPagedResult(dtos, query)));
        }
        private IQueryable <Package> ApplyFilters(IQueryable <Package> source, string id, PackageStatusFilter status)
        {
            var result = source;

            if (!string.IsNullOrEmpty(id))
            {
                result = result.Where(p => p.Id.ToString().StartsWith(id));
            }
            if (status == PackageStatusFilter.InDelivery)
            {
                result = result.Where(p => p.Status == PackageStatus.InDelivery || p.Status == PackageStatus.NoticeLeft);
            }
            else if (status == PackageStatusFilter.Delivered)
            {
                result = result.Where(p => p.Status == PackageStatus.Delivered);
            }
            else if (status == PackageStatusFilter.New)
            {
                result = result.Where(p => p.Status == PackageStatus.InWarehouse || p.Status == PackageStatus.AtClientsLocation);
            }
            else if (status == PackageStatusFilter.ToPickUp)
            {
                result = result.Where(p => p.Status == PackageStatus.ToPickUp);
            }
            return(result);
        }
 private IQueryable<Package> ApplyFilters(IQueryable<Package> source, string id, PackageStatusFilter status)
 {
     var result = source;
     if (!string.IsNullOrEmpty(id))
     {
         result = result.Where(p => p.Id.ToString().StartsWith(id));
     }
     if (status == PackageStatusFilter.InDelivery)
     {
         result = result.Where(p => p.Status == PackageStatus.InDelivery || p.Status == PackageStatus.NoticeLeft);
     }
     else if (status == PackageStatusFilter.Delivered)
     {
         result = result.Where(p => p.Status == PackageStatus.Delivered);
     }
     else if (status == PackageStatusFilter.New)
     {
         result = result.Where(p => p.Status == PackageStatus.InWarehouse || p.Status == PackageStatus.AtClientsLocation);
     }
     else if (status == PackageStatusFilter.ToPickUp)
     {
         result = result.Where(p => p.Status == PackageStatus.ToPickUp);
     }
     return result;
 }
        public IHttpActionResult GetPageForLoggedEmployee([FromUri] PageQuery query, string id = "",
            PackageStatusFilter status = PackageStatusFilter.All, string employeeId = "")
        {
            var packages = context.Set<Package>().AsQueryable();

            var userId = User.Identity.GetUserId();
            var employee = context.Employees.AsQueryable().FirstOrDefault(e => e.User.Id == userId);
            if (employee != null)
            {
                packages = employee.Packages.AsQueryable();
            }

            packages = ApplyFilters(packages, id, status);
            var dtos = packages.ProjectTo<PackageDto>();
            return Ok(PagingHelper.GetPagedResult(dtos, query));
        }