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); }
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 } }; }