Esempio n. 1
0
        // GET: Staff/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            EmployeeViewModel employee = _staffService.FindById(id.Value);

            if (employee == null)
            {
                return(HttpNotFound());
            }
            return(View(employee));
        }
        public async Task <AdvancedGetRenewContractResponse> AdvancedGetRenewContract(string sorts, string filters, int?page, int?pageSize)
        {
            var sieveModel = new SieveModel()
            {
                PageSize = pageSize,
                Sorts    = sorts,
                Page     = page,
                Filters  = filters
            };

            var renewContract = await _repoWrapper.RenewContract.FindAllAsync();

            if (renewContract == null || renewContract.Any() == false)
            {
                throw new HttpStatusCodeException(HttpStatusCode.NotFound, "RenewContractService: No contract is found");
            }

            var resultResponses = new List <GetRenewContractResponse>();

            foreach (var contractRenewalForm in renewContract)
            {
                var student = await _studentService.FindById(contractRenewalForm.StudentId);

                Staff staff = null;
                if (contractRenewalForm.StaffId != null)
                {
                    staff = await _staffService.FindById(contractRenewalForm.StaffId.Value);
                }

                resultResponses.Add(GetRenewContractResponse.ResponseFromEntity(contractRenewalForm, student, staff));
            }

            //Apply filter, sort
            var result = _sieveProcessor.Apply(sieveModel, resultResponses.AsQueryable(), applyPagination: false).ToList();

            var response = new AdvancedGetRenewContractResponse()
            {
                CurrentPage = page ?? 1,
                TotalPage   = (int)Math.Ceiling((double)result.Count / pageSize ?? 1),
                //Apply pagination
                ResultList = _sieveProcessor
                             .Apply(sieveModel, result.AsQueryable(), applyFiltering: false, applySorting: false).ToList()
            };

            //Return List of result
            return(response);
        }