Beispiel #1
0
        public async Task CreateOrUpdateAsync(ArrangementDto arrangementDto)
        {
            var arrangement = MapToArrangement(arrangementDto);

            if (arrangement.Id == 0)
            {
                _context.Arrangements.Add(arrangement);
            }
            else
            {
                _context.Arrangements.Update(arrangement);
            }

            await _context.SaveChangesAsync();

            //var nonExistingTags
            //    = arrangementDto
            //        .SelectedTags
            //        .Where(e => e.TagId == 0)
            //        .Select(e => new Tag() { Content = e.Content });
            //await _tagService.AddRangeAsync(nonExistingTags);
            await _tagArrangementService.RemoveAsync(arrangement);

            var selectedTagsContent = arrangementDto.AvailableTags.Where(e => e.Selected).Select(e => e.Content).ToArray();
            var dbTags          = _context.Tags.Where(e => selectedTagsContent.Contains(e.Content)).ToList();
            var tagArrangements = dbTags.Select(e => new TagArrangement()
            {
                ArrangementId = arrangement.Id, TagId = e.Id
            });
            await _tagArrangementService.AddRangeAsync(tagArrangements);

            await _context.SaveChangesAsync();
        }
        public async Task <ActionResult> Create(ArrangementDto arrangementDto)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    await _arrangementService.CreateOrUpdateAsync(arrangementDto);

                    return(RedirectToAction(nameof(Index)));
                }
                else
                {
                    var emptyArrangement = _arrangementService.Empty();
                    arrangementDto.AvailableTags     = emptyArrangement.AvailableTags;
                    arrangementDto.AvailablePeople   = emptyArrangement.AvailablePeople;
                    arrangementDto.AvailableSubjects = emptyArrangement.AvailableSubjects;

                    return(View(arrangementDto));
                }
            }
            catch
            {
                return(View());
            }
        }
Beispiel #3
0
 private Arrangement MapToArrangement(ArrangementDto arrangementDto)
 {
     return(new Arrangement()
     {
         Complexity = arrangementDto.Complexity,
         DateTime = arrangementDto.DateTime,
         Id = arrangementDto.Id,
         IsHandled = arrangementDto.IsHandled,
         PersonId = arrangementDto.SelectedPersonId,
         SubjectId = arrangementDto.SelectedSubjectId
     });
 }
Beispiel #4
0
        public IHttpActionResult GetArrangement(int id)
        {
            if (id <= 0)
            {
                return(BadRequest("Invalid Id"));
            }

            var arrangement = _context.Arrangements
                              .Include(x => x.ApplicationUser)
                              .Include(x => x.Subscribers)
                              .FirstOrDefault(x => x.Id == id);

            if (arrangement == null)
            {
                return(NotFound());
            }

            var subscribersList = new List <SubscriberDto>();

            foreach (var subscription in arrangement.Subscribers)
            {
                var subscriber = _context.Users.FirstOrDefault(x => x.Id == subscription.ApplicationUserId);

                subscribersList.Add(new SubscriberDto()
                {
                    Username = subscriber.UserName,
                    Fullname = subscriber.GetFullname()
                });
            }

            var arrangementDto = new ArrangementDto()
            {
                Id = id,
                BirthdayManUsername  = arrangement.ApplicationUser.UserName.ToLower(),
                IsComplete           = arrangement.IsComplete,
                GiftDescription      = arrangement.GiftDescription,
                GiftPrice            = arrangement.GiftPrice,
                Birthday             = arrangement.Birthday,
                SubscribersUseranmes = subscribersList
            };

            return(Ok(arrangementDto));
        }
Beispiel #5
0
        public IHttpActionResult SaveArrangement(ArrangementDto arrangementDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest("Something went wrong :("));
            }

            var isCreateOperation = arrangementDto.Id == 0;

            if (isCreateOperation)
            {
                var birthdayMan = _context.Users.FirstOrDefault(x => x.UserName.ToLower() == arrangementDto.BirthdayManUsername.ToLower());
                if (birthdayMan == null)
                {
                    return(BadRequest($"Birthdayman's username is invalid."));
                }

                if (arrangementDto.SubscribersUseranmes == null)
                {
                    return(BadRequest($"At least one subscriber is required."));
                }

                var birthday          = birthdayMan.GetBirthdayForCurrentYear();
                var arrangementFromDb = _context.Arrangements
                                        .FirstOrDefault(x => x.ApplicationUserId == birthdayMan.Id && x.Birthday == birthday);

                if (arrangementFromDb != null)
                {
                    return(BadRequest($"Arrangement for this users's birthday already exists."));
                }

                var newArrangement = new Arrangement()
                {
                    ApplicationUser = birthdayMan,
                    Birthday        = birthdayMan.GetBirthdayForCurrentYear(),
                    GiftDescription = arrangementDto.GiftDescription,
                    GiftPrice       = arrangementDto.GiftPrice,
                    IsComplete      = arrangementDto.IsComplete
                };

                _context.Arrangements.Add(newArrangement);
                _context.SaveChanges();

                foreach (var subscriberUsername in arrangementDto.SubscribersUseranmes)
                {
                    var user = _context.Users.FirstOrDefault(x => x.UserName.ToLower() == subscriberUsername.Username.ToLower());
                    if (user == null)
                    {
                        return(BadRequest($"User cannot be found for this username {subscriberUsername}. Subscription creating failed."));
                    }

                    var newSubscription = new Subscription()
                    {
                        ArrangementId     = newArrangement.Id,
                        ApplicationUserId = user.Id
                    };

                    _context.Subscriptions.Add(newSubscription);
                }

                _context.SaveChanges();
                return(Ok(newArrangement.Id));
            }
            else
            {
                var arrangement = _context.Arrangements
                                  .Include(x => x.ApplicationUser)
                                  .FirstOrDefault(x => x.Id == arrangementDto.Id);

                if (arrangement == null)
                {
                    return(NotFound());
                }

                if (arrangement.IsComplete)
                {
                    return(BadRequest("You can't make any changes after card is completed."));
                }

                arrangement.GiftDescription = arrangementDto.GiftDescription;
                arrangement.GiftPrice       = arrangementDto.GiftPrice;

                if (arrangementDto.SubscribersUseranmes != null && arrangementDto.SubscribersUseranmes.Any())
                {
                    //Remove all previus subscription for full replace.
                    var subscriptions = _context.Subscriptions.Where(x => x.ArrangementId == arrangementDto.Id);
                    _context.Subscriptions.RemoveRange(subscriptions);

                    foreach (var subscriberUsername in arrangementDto.SubscribersUseranmes)
                    {
                        var user = _context.Users.FirstOrDefault(x => x.UserName.ToLower() == subscriberUsername.Username.ToLower());
                        if (user == null)
                        {
                            return(BadRequest($"User cannot be found for this username {subscriberUsername}. Subscription creating failed."));
                        }

                        var newSubscription = new Subscription()
                        {
                            ArrangementId     = arrangement.Id,
                            ApplicationUserId = user.Id
                        };

                        _context.Subscriptions.Add(newSubscription);
                    }
                }

                _context.SaveChanges();
                return(Ok(arrangement.Id));
            }
        }