public ActionResult EditPub(PublicationViewModel model) { if (ModelState.IsValid) { var ctx = new DataContext(); Publication publication = ctx.Publications.Where(p => p.PublicationId == model.Id).FirstOrDefault(); IUserService userService = new UserService(); string userId = User.Identity.GetUserId(); User currentUser = ctx.Users.Where(u => u.Id == userId).FirstOrDefault(); //User currentUser = userService.GetDBUser(User.Identity.GetUserId()); //Tags string[] tagsSplited = model.Tags.Split(','); for (int i = 0; i < tagsSplited.Length; i++) { tagsSplited[i] = tagsSplited[i].Trim(); } ITagsService tagsService = new TagsService(); tagsService.AddTags(tagsSplited.ToList()); //Publication tags List <PublicationTag> pubTags = new List <PublicationTag>(); for (int i = 0; i < tagsSplited.Length; i++) { Tag tag = tagsService.GetTag(tagsSplited[i]); if (tagsSplited != null) { pubTags.Add(new PublicationTag() { Publication = publication, Tag = tag }); } } ctx.Publication_Tags.AddRange(pubTags); //category ICategoryService categoryService = new CategoryService(); Publication_category category = categoryService.GetCategory(model.Category); #region Sources //sources //string[] sourcesSplited = model.Sources.Split('\n'); //for (int i = 0; i < sourcesSplited.Length; i++) { // sourcesSplited[i] = sourcesSplited[i].Trim(); //} //var sourcesList = sourcesSplited.ToList(); //sourcesList.RemoveAt(sourcesList.Count - 1); //ISourceService sourceService = new SourceService(); //sourceService.AddSources(sourcesList); ////source position //List<SourcePosition> sourcePositions = new List<SourcePosition>(); //for (int i = 0; i < sourcesSplited.Length - 1; i++) { // string sourceName = sourcesSplited[i]; // Source source = ctx.Sources.Where(s => s.Name == sourceName).FirstOrDefault(); // SourcePosition position = new SourcePosition() { // Source = source, // Publication = publication // }; // sourcePositions.Add(position); //} //ctx.SourcePositions.AddRange(sourcePositions); #endregion //File string filePath = Server.MapPath("~/Publications/"); if (!Directory.Exists(filePath)) { Directory.CreateDirectory(filePath); } string fileName = model.File.FileName; fileName = fileName.Substring(fileName.LastIndexOf("\\") + 1); model.File.SaveAs(filePath + fileName); Data.Model.File file = new Data.Model.File() { Name = fileName, Link_source = filePath + fileName, IsCurrent = true, Publication = publication }; //IFileService fileService = new FileService(); //fileService.AddFile(file); ctx.Files.Add(file); publication.Author = currentUser; publication.Title = model.Title; publication.PublicationTags = pubTags; publication.Description = model.Description; //publication.SourcePositions = sourcePositions; publication.Category = category; publication.Files.Add(file); currentUser.Publications.Add(publication); ctx.Publications.AddOrUpdate(publication); ctx.SaveChanges(); return(RedirectToAction("Index")); } return(View()); }