Exemplo n.º 1
0
        public IHttpActionResult AddPigeon(PigeonBindingModel inputPigeon)
        {
            if (inputPigeon == null)
            {
                return this.BadRequest(InvalidPigeonPostInputDataMessage);
            }

            var loggedUserId = this.User.Identity.GetUserId();

            if (!this.ModelState.IsValid)
            {
                return this.BadRequest(this.ModelState);
            }

            var pigeonToAdd = new Pigeon
            {
                Title = inputPigeon.Title,
                Content = inputPigeon.Content,
                Author = this.Data.Users.Search(u => u.Id == loggedUserId).FirstOrDefault(),
                AuthorId = loggedUserId,
                CreatedOn = DateTime.Now,
                Comments = new HashSet<Comment>(),
                Votes = new HashSet<PigeonVote>()
            };

            if (inputPigeon.PhotoData != null)
            {
                var photo = new Photo { Base64Data = inputPigeon.PhotoData };

                this.Data.Photos.Add(photo);
                pigeonToAdd.Photo = photo;
            }

            this.Data.Pigeons.Add(pigeonToAdd);
            this.Data.SaveChanges();

            var pigeonViewModel = PigeonViewModel.CreateSingle(pigeonToAdd);

            return this.Ok(pigeonViewModel);
        }
Exemplo n.º 2
0
 public static PigeonViewModel CreateSingle(Pigeon pigeonDbModel)
 {
     return new PigeonViewModel
     {
         Id = pigeonDbModel.Id,
         Title = pigeonDbModel.Title,
         Content = pigeonDbModel.Content,
         PhotoData = pigeonDbModel.Photo != null ? pigeonDbModel.Photo.Base64Data : null,
         CreatedOn = pigeonDbModel.CreatedOn,
         FavouritedCount = pigeonDbModel.FavouritedCount,
         CommentsCount = 0,
         Author = new AuthorViewModel
         {
             Username = pigeonDbModel.Author.UserName,
             ProfilePhotoData = pigeonDbModel.Author.ProfilePhoto != null ?
                 pigeonDbModel.Author.ProfilePhoto.Base64Data : null
         }
     };
 }