public void Delete(int id)
 {
     MicroserviceResponse response = Execute(
         $"{_client.BaseAddress}?id={id}",
         null,
         HttpMethod.Put);
 }
        public Dictionary <int, OfferViewModel> GetManyByIds(int[] ids, bool activeOnly)
        {
            string requestUrl = $"{_client.BaseAddress}/all/?activeOnly={activeOnly}";

            foreach (int id in ids)
            {
                requestUrl += $"&ids={id}";
            }

            MicroserviceResponse response = Execute(
                requestUrl,
                null,
                HttpMethod.Get);

            var offers = JsonConvert.DeserializeObject <IEnumerable <OfferViewModel> >(response.ReturnData);

            Dictionary <int, OfferViewModel> result = new Dictionary <int, OfferViewModel>();

            foreach (var offerViewModel in offers)
            {
                result.Add(offerViewModel.Id, offerViewModel);
            }

            return(result);
        }
        protected MicroserviceResponse Execute(string url, Object content, HttpMethod requestMethod)
        {
            string accessToken = _httpContextAccessor.HttpContext.GetTokenAsync("access_token").Result;

            _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
            Task <HttpResponseMessage> requestTask = null;

            switch (requestMethod)
            {
            case HttpMethod.Get:
                requestTask = _client.GetAsync(url);
                break;

            case HttpMethod.Post:
                requestTask = _client.PostAsync(url, new JsonContent(content));
                break;

            case HttpMethod.Put:
                requestTask = _client.PutAsync(url, new JsonContent(content));
                break;

            case HttpMethod.Delete:
                requestTask = _client.DeleteAsync(url);
                break;
            }

            HttpResponseMessage httpResponseMessage = requestTask.Result;
            string responseBody = httpResponseMessage.Content.ReadAsStringAsync().Result;

            MicroserviceResponse result = new MicroserviceResponse {
                ReturnData = responseBody, Code = httpResponseMessage.StatusCode
            };

            return(result);
        }
        public void Create(ProductCreateInputModel input)
        {
            MicroserviceResponse response = Execute(
                _client.BaseAddress.ToString(),
                input,
                HttpMethod.Post);

            Console.WriteLine();
        }
        public void Edit(ProductEditViewModel input)
        {
            MicroserviceResponse response = Execute(
                $"{_client.BaseAddress}/{input.Id}",
                input,
                HttpMethod.Put);

            Console.WriteLine();
        }
        public int GetDuration(int id)
        {
            MicroserviceResponse response = Execute(
                $"{_client.BaseAddress}/{id}/duration",
                null,
                HttpMethod.Get);

            return(int.Parse(response.ReturnData));
        }
        public bool Confirm(int appointmentRequestId)
        {
            MicroserviceResponse response = Execute(
                $"{_client.BaseAddress}/{appointmentRequestId}/confirm",
                null,
                HttpMethod.Post);

            return(response.Code == HttpStatusCode.OK);
        }
        public void Activate(int id)
        {
            MicroserviceResponse response = Execute(
                $"{_client.BaseAddress}/activate/{id}",
                null,
                HttpMethod.Get);

            Console.WriteLine();
        }
        public void Delete(int id)
        {
            MicroserviceResponse response = Execute(
                $"{_client.BaseAddress}/{id}",
                null,
                HttpMethod.Delete);

            Console.WriteLine();
        }
        public AppointmentViewModel GetById(int appointmentId)
        {
            MicroserviceResponse response = Execute(
                $"{_client.BaseAddress}/{appointmentId}",
                null,
                HttpMethod.Get);

            var result = JsonConvert.DeserializeObject <AppointmentViewModel>(response.ReturnData);

            return(result);
        }
        public IEnumerable <AppointmentViewModel> GetAllNonConfirmed()
        {
            MicroserviceResponse response = Execute(
                $"{_client.BaseAddress}/non-confirmed",
                null,
                HttpMethod.Get);

            var result = JsonConvert.DeserializeObject <IEnumerable <AppointmentViewModel> >(response.ReturnData);

            return(result);
        }
        public IEnumerable <AppointmentViewModel> GetConfirmedByCustomerId(string customerId)
        {
            MicroserviceResponse response = Execute(
                $"{_client.BaseAddress}/customers/{customerId}/confirmed",
                null,
                HttpMethod.Get);

            var result = JsonConvert.DeserializeObject <IEnumerable <AppointmentViewModel> >(response.ReturnData);

            return(result);
        }
        public IEnumerable <ProductViewModel> GetAll()
        {
            MicroserviceResponse response = Execute(
                _client.BaseAddress.ToString(),
                null,
                HttpMethod.Get);

            var allProducts = JsonConvert.DeserializeObject <IEnumerable <ProductViewModel> >(response.ReturnData);

            return(allProducts);
        }
        public OfferViewModel GetById(int id)
        {
            MicroserviceResponse response = Execute(
                $"{_client.BaseAddress}?id={id}",
                null,
                HttpMethod.Get);

            var offer = JsonConvert.DeserializeObject <OfferViewModel>(response.ReturnData);

            return(offer);
        }
        public IEnumerable <OfferViewModel> GetAll(bool activeOnly)
        {
            MicroserviceResponse response = Execute(
                $"{_client.BaseAddress}?activeOnly={activeOnly}",
                null,
                HttpMethod.Get);

            var allOffers = JsonConvert.DeserializeObject <IEnumerable <OfferViewModel> >(response.ReturnData);

            return(allOffers);
        }
        public UserPersonalInfo GetUserPersonalInfo(string userId)
        {
            MicroserviceResponse response = Execute(
                $"{_client.BaseAddress}Users/{userId}",
                null,
                HttpMethod.Get);

            UserPersonalInfo result = JsonConvert.DeserializeObject <UserPersonalInfo>(response.ReturnData);

            return(result);
        }
        public IEnumerable <string> GetProductTypes()
        {
            MicroserviceResponse response = Execute(
                $"{_client.BaseAddress}/types",
                null,
                HttpMethod.Get);

            var responseList = JsonConvert.DeserializeObject <IEnumerable <string> >(response.ReturnData);

            return(responseList);
        }
        public ProductViewModel GetById(int id)
        {
            MicroserviceResponse response = Execute(
                $"{_client.BaseAddress}/{id}",
                null,
                HttpMethod.Get);

            ProductViewModel result = JsonConvert.DeserializeObject <ProductViewModel>(response.ReturnData);

            return(result);
        }
 public void CreateAppointmentRequest(AppointmentCreateInputModel input)
 {
     MicroserviceResponse response = Execute(
         _client.BaseAddress.ToString(),
         new {
         input.CustomerId,
         input.Date,
         input.OfferId,
         IsConfirmed = false
     },
         HttpMethod.Post);
 }
        public AppointmentFreeValidationResponseModel CheckIsAppointmentRequestTimeFree(DateTime appointmentRequestDate, int appointmentRequestDuration)
        {
            MicroserviceResponse response = Execute(
                $"{_client.BaseAddress}/check-time",
                new
            {
                AppointmentRequestTime     = appointmentRequestDate,
                AppointmentRequestDuration = appointmentRequestDuration
            },
                HttpMethod.Post);

            var result = JsonConvert.DeserializeObject <AppointmentFreeValidationResponseModel>(response.ReturnData);

            return(result);
        }
        public void Create(OfferCreateInputModel input)
        {
            MicroserviceResponse response = Execute(
                _client.BaseAddress.ToString(),
                new {
                input.Name,
                input.TotalPrice,
                Products = input.ProductIds,
                input.Discount,
                input.ExpiryDate,
                input.ImageUrl
            },
                HttpMethod.Post);

            Console.WriteLine();
        }