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 UpdateEquipment_DataDrivenTest(EquipmentUpdateDto model, bool expectation)
        {
            try
            {
                var equipmentId = Context.Equipments.First()?.Id;

                model.Id = equipmentId.Value;
                var requestModel = new CommonRequestMessage {
                    Content = JsonConvert.SerializeObject(model)
                };

                CommonResponseMessage response = await sut.UpdateEquipment(requestModel, default(ServerCallContext));

                var equipment = JsonConvert.DeserializeObject <EquipmentDetailDto>(response.Content);

                if (expectation)
                {
                    Assert.True(response.Status);
                    Assert.Equal(equipment.Id, model.Id);
                }
                else
                {
                    Assert.False(response.Status);
                }
            }
            catch
            {
                Assert.True(false);
            }
        }
        public async override Task <CommonResponseMessage> GetEquipment(CommonRequestMessage request, ServerCallContext context)
        {
            var equipmentId = JsonConvert.DeserializeObject <int>(request.Content);
            var equipment   = (await equipmentRepository.Get(equipmentId))?.ToEquipmentDetailDto();
            var result      = new CommonResponseMessage {
                Content = JsonConvert.SerializeObject(equipment), Message = "Success", Status = true
            };

            return(result);
        }
        public async Task InsertEquipment_DataDrivenTest(EquipmentInsertDto model, bool expectation)
        {
            var requestModel = new CommonRequestMessage {
                Content = JsonConvert.SerializeObject(model)
            };

            CommonResponseMessage response = await sut.InsertEquipment(requestModel, default(ServerCallContext));

            var equipment = JsonConvert.DeserializeObject <EquipmentDetailDto>(response.Content);

            if (expectation)
            {
                Assert.True(response.Status);
                Assert.NotNull(equipment);
                Assert.Equal(equipment.Name, model.Name);
            }
            else
            {
                Assert.Null(equipment);
            }
        }