예제 #1
0
        public async Task <IActionResult> Create(CompositionCreateViewModel viewModel)
        {
            IdentityUser user = await userManager.FindByNameAsync(HttpContext.User.Identity.Name);

            if (ModelState.IsValid)
            {
                var composition = compositionService.CreateComposition(viewModel, user);
                return(RedirectToAction("SuccessfulCreate", new { composition.Id }));
            }
            return(View(viewModel));
        }
예제 #2
0
        public async Task <IActionResult> Create(CompositionCreateViewModel model, string userId)
        {
            string ownerId;
            var    user = await _userManager.GetUserAsync(HttpContext.User);

            if (await _userManager.IsInRoleAsync(user, "admin"))
            {
                if (!string.IsNullOrEmpty(userId) && !userId.Equals(user.Id))
                {
                    ownerId = userId;
                }
                else
                {
                    return(RedirectToAction("AdminCantAddComposition", "Notifications"));
                }
            }
            else
            {
                var owner = await _userManager.GetUserAsync(HttpContext.User);

                ownerId = owner.Id;
            }
            if (ModelState.IsValid)
            {
                if (_dbCompositionService.FindByName(model.Name) == null)
                {
                    Composition composition = new Composition()
                    {
                        Annotation       = model.Annotation,
                        FirstPublication = DateTime.Now,
                        GenreId          = _dbGenreService.FindByGenreString(model.GenreString).Id,
                        LastPublication  = DateTime.Now,
                        Name             = model.Name,
                        UserId           = ownerId
                    };
                    _dbCompositionService.AddComposition(composition);
                    long compositionId  = _dbCompositionService.FindByName(composition.Name).Id;
                    var  listTagStrings = _tagFormatter.FormatTagsToList(model.Tags);
                    _dbTagService.AddTagsIfNotExist(listTagStrings);
                    var tags = _dbTagService.FindAllByTagStrings(listTagStrings);
                    _dbTagService.AddCompositionTags(compositionId, tags);
                    var callbackUri = Url.Action("Image", "Composition", new { id = compositionId }, protocol: HttpContext.Request.Scheme);
                    return(Redirect(callbackUri));
                }
                else
                {
                    ModelState.AddModelError("", "A composition with this name already exists.");
                }
            }
            return(View());
        }
예제 #3
0
        public Composition CreateComposition(CompositionCreateViewModel viewModel, IdentityUser user)
        {
            Composition composition = new Composition()
            {
                Name = viewModel.Name,
                GenreOfComposition = viewModel.Genre,
                Description        = viewModel.Description,
                User           = user as User,
                DateOfCreation = DateTime.Now
            };

            context.Compositions.Add(composition);
            context.SaveChanges();
            AddTagToComposition(viewModel.Tags, composition);
            return(composition);
        }