public async override Task <CommonResponseMessage> GetEquipments(CommonRequestMessage request, ServerCallContext context)
        {
            var dto = JsonConvert.DeserializeObject <EquipmentPaginationRequestDto>(request.Content);

            var query = await equipmentRepository.GetAllIncludeAll();

            if (dto.ClinicId > 0)
            {
                query = query.Where(c => c.ClinicId == dto.ClinicId);
            }

            var totalItem = query.Count();

            query = SortAndFilterEquipments(dto, query);

            query = query.Skip(dto.Page * dto.PageItemCount)
                    .Take(dto.PageItemCount);

            var equipments = query?.ToEquipmentItemDtoList();

            var result = new Paginatedlist <EquipmentItemDto>(equipments, dto.Page, totalItem, dto.PageItemCount);

            return(new CommonResponseMessage {
                Content = JsonConvert.SerializeObject(result), Message = "Success", Status = true
            });
        }
        public async override Task <CommonResponseMessage> GetClinics(CommonRequestMessage request, ServerCallContext context)
        {
            var result = new CommonResponseMessage();

            var dto   = JsonConvert.DeserializeObject <PaginationRequestDto>(request.Content);
            var query = await clinicRepository.GetAll();

            var totalItem = query.Count();
            var property  = typeof(Clinic).GetProperties().Where(p => p.CanWrite && p.Name.ToLower() == dto.Column?.ToLower()).SingleOrDefault();

            switch (dto.Type)
            {
            case PaginationType.Sorting:
                query = dto.IsAscending ? query.OrderBy(c => property.GetValue(c)) : query.OrderByDescending(c => property.GetValue(c));
                break;

            case PaginationType.Searching:
                query = query.Where(c => c.Name != null && c.Name.ToLower().Contains(dto.SearchText?.ToLower()));
                break;

            default:
                break;
            }
            query = query.Skip(dto.Page * dto.PageItemCount).Take(dto.PageItemCount);

            var clinics = query?.ToClinicItemDtoList();

            var paginatedList = new Paginatedlist <ClinicItemDto>(clinics, dto.Page, totalItem, dto.PageItemCount);

            return(new CommonResponseMessage {
                Content = JsonConvert.SerializeObject(paginatedList), Message = "Success", Status = true
            });
        }
        public async Task <Paginatedlist <ClinicItemDto> > GetAllClinics(PaginationRequestDto dto)
        {
            var result = new Paginatedlist <ClinicItemDto>();

            var query = await clinicRepository.GetAll();

            var totalItem = query.Count();
            var property  = typeof(Clinic).GetProperties().Where(p => p.CanWrite && p.Name.ToLower() == dto.Column?.ToLower()).SingleOrDefault();

            switch (dto.Type)
            {
            case PaginationType.Sorting:
                query = dto.IsAscending ? query.OrderBy(c => property.GetValue(c)) : query.OrderByDescending(c => property.GetValue(c));
                break;

            case PaginationType.Searching:
                query = query.Where(c => c.Name != null && c.Name.ToLower().Contains(dto.SearchText?.ToLower()));
                break;

            default:
                break;
            }
            query = query.Skip(dto.Page * dto.PageItemCount).Take(dto.PageItemCount);

            var clinics = query?.ToClinicItemDtoList();

            return(new Paginatedlist <ClinicItemDto>(clinics, dto.Page, totalItem, dto.PageItemCount));
        }
        public async Task <Paginatedlist <EquipmentItemDto> > GetAllEquipments(EquipmentPaginationRequestDto dto)
        {
            var result = new Paginatedlist <EquipmentItemDto>();

            var query = await equipmentRepository.GetAllIncludeAll();

            if (dto.ClinicId > 0)
            {
                query = query.Where(c => c.ClinicId == dto.ClinicId);
            }

            var totalItem = query.Count();

            query = SortAndFilterEquipments(dto, query);

            query = query.Skip(dto.Page * dto.PageItemCount)
                    .Take(dto.PageItemCount);

            var equipments = query?.ToEquipmentItemDtoList();

            return(new Paginatedlist <EquipmentItemDto>(equipments, dto.Page, totalItem, dto.PageItemCount));
        }