コード例 #1
0
        /// <summary>
        /// Creates the story.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns></returns>
        public async Task <APIResponse> CreateStory(CreateStoryRequest request)
        {
            try
            {
                var client = httpClientFactory.CreateClient(BlogServiceOperation.serviceName);

                var         param       = JsonConvert.SerializeObject(request);
                HttpContent contentPost = new StringContent(param, Encoding.UTF8, "application/json");

                var response = await client.PostAsync(servicesConfig.Blog + BlogServiceOperation.CreateStory(), contentPost);

                if (response.IsSuccessStatusCode)
                {
                    var story = JsonConvert.DeserializeObject <StoryResponse>(await response.Content.ReadAsStringAsync());
                    return(new APIResponse(story, HttpStatusCode.Created));
                }

                return(new APIResponse(response.StatusCode));
            }
            catch (Exception ex)
            {
                logger.Error(ex, "Exception in method 'CreateStory()'");
                var exMessage = ex.InnerException != null ? ex.InnerException.Message : ex.Message;
                return(new APIResponse(exMessage, HttpStatusCode.InternalServerError));
            }
        }
        public async Task <IActionResult> CreateStory([FromBody] CreateStoryRequest request)
        {
            var createStoryCommand = new CreateStoryCommand(request);
            var result             = await mediator.Send(createStoryCommand);

            return(StatusCode((int)result.Code, result.Value));
        }
コード例 #3
0
        public async Task <IActionResult> CreateStory([FromForm] CreateStoryRequest request)
        {
            var response = await mediator.Send(request);

            logger.LogResponse($"User #{HttpContext.GetCurrentUserId()} created story #{response.Story?.Id}", response.Error);

            return(response.IsSucceeded ? (IActionResult)Ok(response) : BadRequest(response));
        }
コード例 #4
0
        public async Task CreateStoryRequestHandler_Handle_Returns_InvalidUserKey()
        {
            StoryContext.OpenInMemoryConnection();

            try
            {
                var author = new User
                {
                    UserKey = Guid.NewGuid()
                };

                var charity = new Charity
                {
                    CharityKey = Guid.NewGuid()
                };

                using (var context = StoryContext.GetInMemoryContext())
                {
                    context.Users.Add(author);
                    context.Charities.Add(charity);
                    context.SaveChanges();
                }

                var request = new CreateStoryRequest
                {
                    CharityKey    = charity.CharityKey,
                    StoryKey      = Guid.NewGuid(),
                    AuthorUserKey = Guid.NewGuid(),
                    Title         = "title",
                    CoverImage    = "cover",
                    Images        = new List <string>
                    {
                        "image1",
                        "image2"
                    }
                };

                CreateStoryResponse response;
                using (var context = StoryContext.GetInMemoryContext())
                {
                    var handler = new CreateStoryRequestHandler(context, AutoMapperHelper.BuildMapper(new MappingProfile()));
                    response = await handler.Handle(request);
                }

                using (var context = StoryContext.GetInMemoryContext())
                {
                    Assert.IsFalse(response.IsSuccess);
                    Assert.IsFalse(context.Stories.Any());
                    Assert.IsFalse(context.Images.Any());
                    Assert.AreEqual(ErrorType.InvalidUserKey, response.ErrorType);
                }
            }
            finally
            {
                StoryContext.CloseInMemoryConnection();
            }
        }
コード例 #5
0
        /// <summary>
        /// Creates the story.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns></returns>
        public async Task <APIResponse> CreateStory(CreateStoryRequest request)
        {
            try
            {
                string filename   = "";
                var    folderName = Path.Combine("EventStories");
                var    pathToSave = Path.Combine("D:", "HappyWedding", folderName);

                if (request.CoverPhotoVideo.Length > 0)
                {
                    string format = System.IO.Path.GetExtension(request.CoverPhotoVideo.FileName);
                    filename = request.VendorId + "_Event_" + DateTime.Now + format;
                    string filenme  = filename.Replace(":", ".");
                    var    filePath = Path.Combine(pathToSave, filenme);
                    using var fileStream = new FileStream(filePath, FileMode.Create);
                    request.CoverPhotoVideo.CopyTo(fileStream);
                    request.CoverPhotoOrVideo = filePath;
                    request.CoverPhotoOrVideo = null;
                }
                var client = httpClientFactory.CreateClient(BlogServiceOperation.serviceName);

                var         param       = JsonConvert.SerializeObject(request);
                HttpContent contentPost = new StringContent(param, Encoding.UTF8, "application/json");

                var response = await client.PostAsync(servicesConfig.Blog + BlogServiceOperation.CreateStory(), contentPost);

                if (response.IsSuccessStatusCode)
                {
                    var story = JsonConvert.DeserializeObject <StoryResponse>(await response.Content.ReadAsStringAsync());
                    return(new APIResponse(story, HttpStatusCode.Created));
                }

                return(new APIResponse(response.StatusCode));
            }
            catch (Exception ex)
            {
                logger.Error(ex, "Exception in method 'CreateStory()'");
                var exMessage = ex.InnerException != null ? ex.InnerException.Message : ex.Message;
                return(new APIResponse(exMessage, HttpStatusCode.InternalServerError));
            }
        }
コード例 #6
0
        //[Authorize(Roles = "Admin, Vendor")]
        public async Task <IActionResult> CreateStory([FromBody] CreateStoryRequest request)
        {
            var result = await storyService.CreateStory(request);

            return(StatusCode((int)result.Code, result.Value));
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="CreateStoryCommand"/> class.
 /// </summary>
 /// <param name="request">The request.</param>
 public CreateStoryCommand(CreateStoryRequest request)
 {
     Request = request;
 }
コード例 #8
0
        public async Task CreateStoryRequestHandler_Handle_Returns_Success()
        {
            StoryContext.OpenInMemoryConnection();

            try
            {
                var author = new User
                {
                    UserKey = Guid.NewGuid()
                };

                var charity = new Charity
                {
                    CharityKey = Guid.NewGuid()
                };

                using (var context = StoryContext.GetInMemoryContext())
                {
                    context.Users.Add(author);
                    context.Charities.Add(charity);
                    context.SaveChanges();
                }

                var request = new CreateStoryRequest
                {
                    CharityKey    = charity.CharityKey,
                    AuthorUserKey = author.UserKey,
                    StoryKey      = Guid.NewGuid(),
                    Title         = "title",
                    CoverImage    = "cover",
                    Images        = new List <string>
                    {
                        "image1",
                        "image2"
                    }
                };

                CreateStoryResponse response;
                using (var context = StoryContext.GetInMemoryContext())
                {
                    var handler = new CreateStoryRequestHandler(context, AutoMapperHelper.BuildMapper(new MappingProfile()));
                    response = await handler.Handle(request);
                }

                using (var context = StoryContext.GetInMemoryContext())
                {
                    Assert.IsTrue(response.IsSuccess);
                    Assert.AreEqual(1, context.Stories.Count());
                    Assert.AreEqual(request.CoverImage, context.Stories.Single().CoverImage);
                    Assert.AreEqual(request.Title, context.Stories.Single().Title);
                    Assert.AreEqual(request.StoryKey, context.Stories.Single().StoryKey);
                    Assert.AreEqual(request.AuthorUserKey, context.Stories.IncludeAuthor().Single().Author.UserKey);
                    Assert.AreEqual(2, context.Images.Count());
                    Assert.AreEqual(2, context.Stories.IncludeImages().Single().Images.Count);
                    Assert.AreEqual(1, context.Images.Count(i => i.Base64 == "image1"));
                    Assert.AreEqual(1, context.Images.Count(i => i.Base64 == "image2"));
                }
            }
            finally
            {
                StoryContext.CloseInMemoryConnection();
            }
        }