Esempio n. 1
0
        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());
        }