//get all products public async Task <IActionResult> GetProducts([FromQuery] ProductParams productParams) { //get products and general data for filters and lists var products = await _repo.GetProducts(productParams); var generalDataFromRepo = await _repo.GetGeneralData(); var productsToReturn = _mapper.Map <IEnumerable <ProductForHomeDto> >(products); var generalDataToReturn = _mapper.Map <DataForHomeDto>(generalDataFromRepo); //get all products without paging for calculation of counters // var itemsBeforePaging = _mapper.Map<IEnumerable<ProductForHomeDto>>(products.AllItems); //calculate filters for current products list - currently not in use // foreach (var year in generalDataToReturn.Years) // { // year.FilteredCounter = itemsBeforePaging.Where(p => p.YearOfCreation == year.Title).Count(); // } // foreach (var degree in generalDataToReturn.Degree) // { // degree.FilteredCounter = itemsBeforePaging.Where(p => p.Degree == degree.Title).Count(); // } // foreach (var course in generalDataToReturn.Courses) // { // course.FilteredCounter = itemsBeforePaging.Where(p => p.Courses.Any(c => c.Id == course.Id)).Count(); // } // foreach (var org in generalDataToReturn.Organizations) // { // org.FilteredCounter = itemsBeforePaging.Where(p => p.OrganizationId == org.Id).Count(); // } // foreach (var orgType in generalDataToReturn.OrganizationTypes) // { // orgType.FilteredCounter = itemsBeforePaging.Where(p => p.OrganizationTypes.Any(ot => ot.Id == orgType.Id)).Count(); // } // foreach (var lect in generalDataToReturn.Lecturers) // { // lect.FilteredCounter = itemsBeforePaging.Where(p => p.Lecturers.Any(l => l.Id == lect.Id)).Count(); // } // foreach (var task in generalDataToReturn.Tasks) // { // task.FilteredCounter = itemsBeforePaging.Where(p => p.TaskId == task.Id).Count(); // } // foreach (var pt in generalDataToReturn.ProductTypes) // { // pt.FilteredCounter = itemsBeforePaging.Where(p => p.ProductTypeId == pt.Id).Count(); // } //set all data in one class var rootData = new RootForHomeDto(); rootData.Products = productsToReturn; rootData.GeneralData = generalDataToReturn; //add pagination headers Response.AddPagination(products.CurrentPage, products.PageSize, products.TotalCount, products.TotalPages); return(Ok(rootData)); }
public async Task <IActionResult> GetGeneralData() { var dataForHome = await _repo.GetGeneralData(); var dataToReturn = _mapper.Map <DataForEditDto>(dataForHome); //return Ok(dataForHome); return(Ok(dataToReturn)); }