public async Task <IActionResult> AddPost([FromBody] AddPostModelView model) { var ValidationContext = new ValidationContext(model.NewPost); if (Validator.TryValidateObject(model.NewPost, ValidationContext, null))// zamiast null można dać liste która zostanie zapełniona błędami { var DateNow = DateTime.Now; BlogUserIdentity user = await _userManager.FindByNameAsync(User.Identity.Name); var UserBlog = _appContext.Blogs.FirstOrDefault(ob => ob.BlogUserIdentity == user); Post NewPost = new Post() { Title = model.NewPost.Title, Blog = UserBlog, ContentOne = model.NewPost.ContentOne, ContentTwo = model.NewPost.ContentTwo, Comments = null, DateOfPost = DateNow.Ticks, Images = new List <ImgPost>(), PostTags = new List <PostTag>() }; if (model.Thumbnail.name != "") { NewPost.Thumbnail = "/Src/Profile/" + user.Id.ToString() + "/" + model.NewPost.Title + DateNow.Ticks.ToString() + "/" + model.Thumbnail.name; await _fileService.AddThumbnailToPostAsynch(user, model.NewPost.Title, model.Thumbnail, DateNow.Ticks); } else { NewPost.Thumbnail = "/Src/System/noimage.png"; } //_appContext.Add(NewPost);// add new //_appContext.SaveChanges();// save changes so post will get id //NewPost = _appContext.Posts.FirstOrDefault(post => post.Title == model.NewPost.Title);// get post from database await _fileService.AddImagesToPostAsynch(user, model.NewPost.Title, model.Images, DateNow.Ticks); List <Task> CreatingTags = new List <Task>(); foreach (var item in model.NewPost.PostTags) { CreatingTags.Add(CheckTag(item, user)); } await Task.WhenAll(CreatingTags); // tags was created List <Tag> TagLists = new List <Tag>(); foreach (var item in model.NewPost.PostTags) { var tagFromBase = _appContext.Tags.FirstOrDefault(ob => ob.Name == item.ToLower()); if (tagFromBase != null) { TagLists.Add(tagFromBase); } } // get all tags from database List <PostTag> PostTagConnectorList = new List <PostTag>(); foreach (var item in TagLists) { var NewConnector = new PostTag(); NewConnector.Post = NewPost; NewConnector.Tag = item; item.PostTags = new List <PostTag>(); NewPost.PostTags.Add(NewConnector); item.PostTags.Add(NewConnector); PostTagConnectorList.Add(NewConnector); } // objects which connects Tags with posts (many to many connection) //Creatng img objects List <ImgPost> ImageList = new List <ImgPost>(); var path = "/Src/Profile/" + user.Id + "/" + model.NewPost.Title + "/";// base of all images in post foreach (var item in model.Images) { var imagepath = path + item.name; var TmpImgPost = new ImgPost(); TmpImgPost.Src = imagepath; TmpImgPost.Post = NewPost; NewPost.Images.Add(TmpImgPost); ImageList.Add(TmpImgPost);// add to list which will save it to database } try { await _appContext.AddAsync(NewPost);//add post to database await _appContext.AddRangeAsync(PostTagConnectorList); await _appContext.AddRangeAsync(ImageList); } catch (Exception e) { return(Conflict()); } await _appContext.SaveChangesAsync(); return(Ok()); } else { return(Conflict()); } }