private async System.Threading.Tasks.Task PostTrainingCourseMovieAndHandleValdationErrors(
            CancellationToken cancellationToken)
        {
            var trainingCourseToCreate = new TrainingCourseForCreationDTO
            {
                Description = "YYY",
                Duration    = 0,
                Name        = "XXX"
            };

            var serializedCourseForCreation = JsonConvert.SerializeObject(trainingCourseToCreate);

            using (var request = new HttpRequestMessage(
                       HttpMethod.Post,
                       "api/TrainingCourse"))
            {
                request.Headers.Accept.Add(
                    new MediaTypeWithQualityHeaderValue("application/json"));
                request.Headers.AcceptEncoding.Add(new StringWithQualityHeaderValue("gzip"));
                request.Content = new StringContent(serializedCourseForCreation);
                request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

                using (var response = await client.Client.SendAsync(request,
                                                                    HttpCompletionOption.ResponseHeadersRead,
                                                                    cancellationToken))
                {
                    if (!response.IsSuccessStatusCode)
                    {
                        if (response.StatusCode == System.Net.HttpStatusCode.UnprocessableEntity)
                        {
                            var errorStream = await response.Content.ReadAsStreamAsync();

                            var validationErrors = errorStream.ReadAndDeserializeFromJson();
                            Console.WriteLine(validationErrors);
                            return;
                        }
                        else
                        {
                            response.EnsureSuccessStatusCode();
                        }
                    }

                    var stream = await response.Content.ReadAsStreamAsync();

                    var movie = stream.ReadAndDeserializeFromJson <TrainingCourseDTO>();
                }
            }
        }
 //[Authorize(Roles = "admin")]
 public ActionResult Post([FromBody] TrainingCourseForCreationDTO model)
 {
     if (ModelState.IsValid)
     {
         var            entity         = mapper.Map <TrainingCourse>(model);
         TrainingCourse trainingCourse = new TrainingCourse()
         {
             Description = entity.Description,
             Duration    = entity.Duration,
             Name        = entity.Name
         };
         courseService.Insert(trainingCourse);
         return(Ok(trainingCourse));
     }
     return(StatusCode(StatusCodes.Status400BadRequest, new ResponseModel
     {
         Status = "Validation error!",
         Message = "You should check your input parameters!"
     }));
 }
        public async System.Threading.Tasks.Task CreateResource()
        {
            var trainingCourseToCreate = new TrainingCourseForCreationDTO
            {
                Description = "this is some description",
                Duration    = 4,
                Name        = "Search service 2"
            };

            var serializedTrainingCourseToCreate = JsonConvert.SerializeObject(trainingCourseToCreate);
            var request = new HttpRequestMessage(HttpMethod.Post, "api/TrainingCourse");

            request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            request.Content = new StringContent(serializedTrainingCourseToCreate);
            request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
            var response = await httpClient.SendAsync(request);

            response.EnsureSuccessStatusCode();


            var content = await response.Content.ReadAsStringAsync();

            var createdCourse = JsonConvert.DeserializeObject <TrainingCourse>(content);
        }