public DicaViewModel(RepositoryIterator repositoryIterator) { RepositoryIterator = repositoryIterator; }
public Tuple <string, UserRepositoryAccount> handleUserOperation(UserRepositoryAccount userRepositoryAccount, UserOperationType type) { string result = ""; UserRepositoryAccount resultUserRepositoryAccount = userRepositoryAccount; switch (type) { case UserOperationType.CREATE_PUBLIC_REPOSITORY: { result = userRepositoryService.createUserRepository(RepositoryType.PUBLIC, userRepositoryAccount); resultUserRepositoryAccount = identifiedUserRepositoryAccount(userRepositoryAccount.User); break; } case UserOperationType.CREATE_PRIVATE_REPOSITORY: { result = userRepositoryService.createUserRepository(RepositoryType.PRIVATE, userRepositoryAccount); resultUserRepositoryAccount = identifiedUserRepositoryAccount(userRepositoryAccount.User); break; } case UserOperationType.LIST_OWN_REPOSITORIES: { result = $"Your repositories:\n{String.Join("\n", userRepositoryService.listOwnRepositories(userRepositoryAccount).ToArray())}"; resultUserRepositoryAccount = identifiedUserRepositoryAccount(userRepositoryAccount.User); break; } case UserOperationType.LIST_CLONED_REPOSITORIES: { result = $"Your cloned repositories:\n{String.Join("\n", userRepositoryService.listClonedRepositories(userRepositoryAccount).ToArray())}"; resultUserRepositoryAccount = identifiedUserRepositoryAccount(userRepositoryAccount.User); break; } case UserOperationType.LIST_CONTRIBUTED_REPOSITORIES: { var user = userService.getUser(userRepositoryAccount.User.Login); userRepositoryAccount = identifiedUserRepositoryAccount(user); result = $"Repositories where you made contributions:\n{String.Join("\n", userRepositoryService.listContributedRepositories(userRepositoryAccount).ToArray())}"; resultUserRepositoryAccount = identifiedUserRepositoryAccount(userRepositoryAccount.User); break; } case UserOperationType.LOG_OUT: { result = "Thank you for your work! See you later!"; resultUserRepositoryAccount = logOut(userRepositoryAccount.User); break; } case UserOperationType.SIGN_IN: { resultUserRepositoryAccount = signIn(); result = $"Welcome back {resultUserRepositoryAccount.User.Login}! You successfully signed in."; break; } case UserOperationType.SIGN_UP: { resultUserRepositoryAccount = signUp(); result = "You successfully signed up"; break; } case UserOperationType.LOOK_FOR_USER: { User existingUser = lookForUser(); var userOwnRepositories = existingUser.getOwnRepositories().Select(it => it.Name); var userContributedRepositories = existingUser.getContributedRepositories().Select(it => it.Name); result = $"Found user:{existingUser.Login}" + $"\nUser own repositories:\n{String.Join("\n", userOwnRepositories)}" + $"\nUser contributed repositories:\n{String.Join("\n", userContributedRepositories)}"; resultUserRepositoryAccount = identifiedUserRepositoryAccount(userRepositoryAccount.User); break; } case UserOperationType.LOOK_FOR_REPOSITORY: { RepositoryDetails repositoryDetails = repositoryService.getRepositoryDetails(); result = $"Repository:{repositoryDetails.Name}\n" + $"Owner:{repositoryDetails.OwnerName}\n" + $"Branches:\n{String.Join("\n", repositoryDetails.Branches)}\n" + $"Contributors:\n{String.Join("\n", repositoryDetails.Contributors)}"; break; } case UserOperationType.SELECT_REPOSITORY: { var account = userRepositoryService.selectRepository(userRepositoryAccount); resultUserRepositoryAccount = identifiedUserRepositoryAccount(account.User); break; } case UserOperationType.LIST_ALL_PUBLIC_REPOSITORIES: { RepositoryCollection collection = new PublicRepositoryCollection(); RepositoryIterator repositoryIterator = collection.RepositoryIterator(); while (repositoryIterator.hasMore()) { Repository repository = repositoryIterator.getNext(); Console.WriteLine($"Repository:{repository.Name}, owner:{repository.Owner.Login}"); } break; } case UserOperationType.LIST_RATING_REPOSITORIES: { RepositoryCollection collection = new RatingRepositoryCollection(resultUserRepositoryAccount.User); RepositoryIterator repositoryIterator = collection.RepositoryIterator(); while (repositoryIterator.hasMore()) { Repository repository = repositoryIterator.getNext(); Console.WriteLine($"Repository:{repository.Name}, owner:{repository.Owner.Login}, rating:{repository.getRepositoryRating()}"); } break; } default: { result = "Invalid user operation type"; break; } } return(new Tuple <string, UserRepositoryAccount>(result, resultUserRepositoryAccount)); }