public virtual async Task <ToDoGroupDto> CreateToDoGroup(CreateToDoGroupArgs args, CancellationToken cancellationToken) { if (string.IsNullOrEmpty(args.title)) { throw new BadRequestException("TitleMayNotBeEmpty"); } Guid userId = Guid.Parse(UserInformationProvider.GetCurrentUserId()); ToDoGroup addedToDoGroup = await ToDoGroupsRepository.AddAsync(new ToDoGroup { Id = Guid.NewGuid(), CreatedById = userId, CreatedOn = DateTimeProvider.GetCurrentUtcDateTime(), ModifiedOn = DateTimeProvider.GetCurrentUtcDateTime(), Title = args.title, Options = new List <ToDoGroupOptions> { new ToDoGroupOptions { HideCompletedToDoItems = false, SortedBy = SortBy.CreatedDate, Id = Guid.NewGuid(), Theme = "Green", UserId = userId } } }, cancellationToken); return(await GetMyToDoGroups() .FirstAsync(tdg => tdg.Id == addedToDoGroup.Id, cancellationToken)); }
public virtual async Task KickUserFromToDoGroup(KickAnotherUserFromMyToDoGroupArge args, CancellationToken cancellationToken) { Guid userId = Guid.Parse(UserInformationProvider.GetCurrentUserId()); ToDoGroup toDoGroupsToBeKickFrom = await ToDoGroupsRepository.GetAll() .Where(tdg => tdg.Id == args.toDoGroupId) .Select(tdg => new ToDoGroup { Id = tdg.Id, CreatedById = tdg.CreatedById, Items = tdg.Items.Select(tdi => new ToDoItem { Id = tdi.Id, Options = tdi.Options.Where(tdio => tdio.UserId == args.userId).Select(tdio => new ToDoItemOptions { Id = tdio.Id, UserId = tdio.UserId }).ToList() }).ToList() }).FirstOrDefaultAsync(cancellationToken);; if (toDoGroupsToBeKickFrom == null) { throw new ResourceNotFoundException("ToDoGroupCouldNotBeFound"); } if (toDoGroupsToBeKickFrom.CreatedById != userId) { throw new DomainLogicException("OnlyOwnerCanKickOtherUsers"); } User kickedUser = await UsersRepository.GetByIdAsync(cancellationToken, args.userId); if (kickedUser == null) { throw new ResourceNotFoundException("UserCouldNotBeFoundToBeKicked"); } foreach (ToDoItemOptions toDoItemOptionsToBeDeleted in toDoGroupsToBeKickFrom.Items.SelectMany(tdi => tdi.Options) /* We've loaded options of to be kicked user only! */) { await ToDoItemOptionsListRepository.DeleteAsync(toDoItemOptionsToBeDeleted, cancellationToken); } ToDoGroupOptions toDoGroupOptionsToBeDeleted = await ToDoGroupOptionsListRepository.GetAll().FirstOrDefaultAsync(tdo => tdo.ToDoGroupId == args.toDoGroupId && tdo.UserId == args.userId); await ToDoGroupOptionsListRepository.DeleteAsync(toDoGroupOptionsToBeDeleted, cancellationToken); }
public virtual async Task DeleteToDoGroup(Guid key, CancellationToken cancellationToken) { Guid userId = Guid.Parse(UserInformationProvider.GetCurrentUserId()); ToDoGroup toDoGroupToBeDeleted = await ToDoGroupsRepository.GetByIdAsync(cancellationToken, key); if (toDoGroupToBeDeleted == null) { throw new ResourceNotFoundException("ToDoGroupCouldNotBeFound"); } if (toDoGroupToBeDeleted.CreatedById != userId) { throw new DomainLogicException("OnlyOwnerCanDeleteTheToDoGroup"); } await ToDoGroupsRepository.DeleteAsync(toDoGroupToBeDeleted, cancellationToken); }
public virtual async Task <ToDoGroupDto> ShareToDoGroupWithAnotherUser(ShareToDoGroupWithAnotherUserArgs args, CancellationToken cancellationToken) { Guid userId = Guid.Parse(UserInformationProvider.GetCurrentUserId()); ToDoGroup toDoGroup = await ToDoGroupsRepository.GetAll() .Where(tdg => tdg.CreatedById == userId && tdg.Id == args.toDoGroupId) .Select(tdg => new ToDoGroup { Id = tdg.Id, Items = tdg.Items.Select(tdi => new ToDoItem { Id = tdi.Id }).ToList() }).FirstOrDefaultAsync(cancellationToken); if (toDoGroup == null) { throw new ResourceNotFoundException("ToDoGroupCouldNotBeFound"); } await ToDoGroupOptionsListRepository.AddAsync(new ToDoGroupOptions { HideCompletedToDoItems = false, Id = Guid.NewGuid(), SortedBy = SortBy.CreatedDate, Theme = "Green", ToDoGroupId = args.toDoGroupId, UserId = args.anotherUserId }, cancellationToken); foreach (ToDoItem toDoItem in toDoGroup.Items) { await ToDoItemOptionsListRepository.AddAsync(new ToDoItemOptions { Id = Guid.NewGuid(), ToDoItemId = toDoItem.Id, UserId = args.anotherUserId, ShowInMyDayOn = null }, cancellationToken); } return(await GetMyToDoGroups().FirstAsync(tdg => tdg.Id == args.toDoGroupId, cancellationToken)); }
public virtual async Task <ToDoGroupDto> UpdateToDoGroup(Guid key, ToDoGroupDto toDoGroup, CancellationToken cancellationToken) { if (toDoGroup == null) { throw new BadRequestException("ToDoGroupMayNotBeNull"); } Guid userId = Guid.Parse(UserInformationProvider.GetCurrentUserId()); ToDoGroup toDoGroupToBeModified = await ToDoGroupsRepository.GetByIdAsync(cancellationToken, key); if (toDoGroupToBeModified == null) { throw new ResourceNotFoundException("ToDoGroupCouldNotBeFound"); } ToDoGroupOptions toDoGroupOptionsToBeModified = await ToDoGroupOptionsListRepository.GetAll() .FirstAsync(tdgo => tdgo.UserId == userId && tdgo.ToDoGroupId == key, cancellationToken); if (toDoGroupOptionsToBeModified == null) { throw new ResourceNotFoundException("ToDoGroupCouldNotBeFound"); } toDoGroupToBeModified.Title = toDoGroup.Title; toDoGroupToBeModified.ModifiedOn = DateTimeProvider.GetCurrentUtcDateTime(); toDoGroupOptionsToBeModified.Theme = toDoGroup.Theme; toDoGroupOptionsToBeModified.HideCompletedToDoItems = toDoGroup.HideCompletedToDoItems; toDoGroupOptionsToBeModified.SortedBy = toDoGroup.SortedBy; await ToDoGroupsRepository.UpdateAsync(toDoGroupToBeModified, cancellationToken); await ToDoGroupOptionsListRepository.UpdateAsync(toDoGroupOptionsToBeModified, cancellationToken); return(await GetMyToDoGroups() .FirstAsync(tdg => tdg.Id == key, cancellationToken)); }
public ItemsList(ToDoGroup group) { InitializeComponent(); BindingContext = Locator.GetClass <ItemsListViewModel>(group); }
public ManageGroup(ToDoGroup group) { InitializeComponent(); BindingContext = Locator.GetClass <ManageGroupViewModel>(group); }