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()); } }
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 }); }
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)); }
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)); } }