private async Task CheckListNames(SocialMediaListsDetails currentDetails, SocialMediaListsDetails updatedDetails) { var tasks = new List <Task>(); foreach (var updatedListDetails in updatedDetails.Lists) { var listDetails = currentDetails.Lists.Find(l => l.Id == updatedListDetails.Id); // If it doesn't exist in old details, create new list doc if (listDetails == null) { var newList = _mapper.Map <SocialList>(updatedListDetails); newList.MediaPosts = new List <MediaPost>(); tasks.Add(_repo.CreateAsync(newList)); } else if (listDetails.Name != updatedListDetails.Name) { // Update list doc with name change var list = _repo.Get(listDetails.Id); list.Name = updatedListDetails.Name; tasks.Add(_repo.UpdateAsync(list.Id, list)); } } await Task.WhenAll(tasks); }
private async Task DeleteRemovedLists(SocialMediaListsDetails currentDetails, SocialMediaListsDetails updatedDetails) { var tasks = new List <Task>(); foreach (var currentListDetails in currentDetails.Lists) { var listDetails = updatedDetails.Lists.Find(l => l.Id == currentListDetails.Id); // If list has been removed, remove the list doc if (listDetails == null) { tasks.Add(_repo.DeleteAsync(currentListDetails.Id)); } } await Task.WhenAll(tasks); }
private async Task CreateRecentlyAdded(SocialMediaListsDetails details) { var now = DateTime.UtcNow; var name = "Recently Added"; details.Lists.Add(new SocialListBase { Id = RecentlyAddedId, Created = now, Name = name }); var updateListsDetailsTask = _repo.UpdateListsDetailsAsync(details.Id, details); var createListTask = _repo.CreateAsync(new SocialList { Id = RecentlyAddedId, Created = now, Name = name, MediaPosts = new List <MediaPost>() }); await Task.WhenAll(updateListsDetailsTask, createListTask); }
public SocialMediaListsDetailsVM GetListsDetails() { var details = _repo.GetListsDetails(); if (details == null) { details = new SocialMediaListsDetails { Id = ObjectId.GenerateNewId().ToString(), Created = DateTime.UtcNow, Lists = new List <SocialListBase>() } } ; if (details.Lists.Count < 1) { CreateRecentlyAdded(details).Wait(); } var detailsVM = _mapper.Map <SocialMediaListsDetailsVM>(details); return(detailsVM); }
public async Task UpdateListsDetailsAsync(string id, SocialMediaListsDetails listDetails) => await _listsDetailsCollection.ReplaceOneAsync(doc => doc.Id == id, listDetails, new UpdateOptions { IsUpsert = true });
public async Task CreateListsDetailsAsync(SocialMediaListsDetails doc) => await _listsDetailsCollection.InsertOneAsync(doc);