private User GetUser(TeamBuilderContext context, string username, string password, string firstName, string lastName, int age) { var user = context.Users .SingleOrDefault(u => u.Username.Equals(username, StringComparison.OrdinalIgnoreCase)); if (user != null && user.IsDeleted != false) { throw new InvalidOperationException(string.Format(UsernameTakenExceptionMessage, username)); } user = new User(); base.AssignValueArgument <User>(user, string.Format(UsernameNotValidExceptionMessage, username), u => u.Username = username); base.AssignValueArgument <User>(user, string.Format(PasswordNotValidExceptionMessage, password), u => u.Password = password); base.AssignValueArgument <User>(user, AgeNotValidExceptionMessage, u => u.Age = age); user.FirstName = firstName; user.LastName = lastName; return(user); }
private void AcceptInvitation(string teamName) { using (TeamBuilderContext context = new TeamBuilderContext()) { User loggedUser = AuthenticationManager.GetCurrentUser(); Team teamToJoin = context.Teams.SingleOrDefault(team => team.Name == teamName); context.Users.Attach(loggedUser); loggedUser.Teams.Add(teamToJoin); Invitation invitationToAccept = context.Invitations .SingleOrDefault(invitation => invitation.TeamId == teamToJoin.Id && invitation.InvitedUserId == loggedUser.Id && invitation.IsActive); invitationToAccept.IsActive = false; context.SaveChanges(); } }
public string Execute(string[] args) { Check.CheckLength(6, args); AuthenticationManager.Authorize(); string eventName = args[0]; string description = args[1]; string startDateStr = args[2] + " " + args[3]; string endDateStr = args[4] + " " + args[5]; DateTime startDate = ValidateDateParsing(startDateStr); DateTime endDate = ValidateDateParsing(endDateStr); if (startDate >= endDate) { throw new ArgumentException(Constants.ErrorMessages.StartDateIsAfterEndDate); } var currentUser = AuthenticationManager.GetGurrentUser(); var newEvent = new Event() { Name = eventName, Description = description, StartDate = startDate, EndDate = endDate, CreatorId = currentUser.Id }; if (!IsValid(newEvent)) { throw new ArgumentException(Constants.ErrorMessages.InvalidEventArgs); } using (var ctx = new TeamBuilderContext()) { ctx.Events.Add(newEvent); ctx.SaveChanges(); } return($"Event {eventName} was created successfully!"); }
private void AddTeamToEvent(string eventName, string teamName) { using (TeamBuilderContext context = new TeamBuilderContext()) { Team team = context.Teams.FirstOrDefault(t => t.Name == teamName); Event evnt = context.Events .OrderByDescending(e => e.StartDate) // latest startDate event .FirstOrDefault(e => e.Name == eventName); // Check if team is already added to event if (evnt.ParticipatingTeams.Any(t => t.Name == teamName)) { throw new InvalidOperationException(Constants.ErrorMessages.CannotAddSameTeamTwice); } evnt.ParticipatingTeams.Add(team); context.SaveChanges(); } }
public string Execute(string[] inputArgs) { Check.CheckLength(0, inputArgs); AuthenticationManager.Authorize(); User currentUser = AuthenticationManager.GetCurrentUser(); using (var context = new TeamBuilderContext()) { currentUser = context.Users.FirstOrDefault(u => u.Username == currentUser.Username); currentUser.IsDeleted = true; context.SaveChanges(); AuthenticationManager.Logout(); } return($"User {currentUser.Username} was deleted successfully"); }
public void Execute(string[] parameters) { if (parameters.Length != 1) { throw new InvalidOperationException(ConsoleMessages.InvalidArgumentCount); } if (LogedUser.User == null) { throw new InvalidOperationException(ConsoleMessages.LogInFirst); } TeamBuilderContext ctx = new TeamBuilderContext(); var user = ctx.Users.Where(u => u.Id == LogedUser.User.Id).FirstOrDefault(); ctx.Users.Remove(user); ctx.SaveChanges(); SucessMessage = $"User {user.Username} was deleted successfully!"; LogedUser.Logout(); }
public void RegisterUser(string username, string password, string firstName, string lastName, int age, Gender gender) { using (var context = new TeamBuilderContext()) { User user = new User { Username = username, Password = password, FirstName = firstName, LastName = lastName, Age = age, Gender = gender }; context.Users.Add(user); context.SaveChanges(); } }
//EventTeam <eventName> internal static string Execute(string[] data) { Check.CheckLength(1, data); var eventName = data[0]; bool eventExists = CommandHelper.IsEventExisting(eventName); if (!eventExists) { throw new ArgumentException(string.Format(Constants.ErrorMessages.EventNotFound, eventName)); } var eventTeams = new StringBuilder(); using (var context = new TeamBuilderContext()) { var @event = context.Events .Where(e => e.Name == eventName) .Select(e => new { e.Name, e.StartDate, e.EndDate, e.Description, TeamNames = e.ParticipatingEventTeams. Select(p => p.Team.Name).ToArray() }) .OrderByDescending(e => e.StartDate) .First(); eventTeams.AppendLine($"{@event.Name} {@event.StartDate} {@event.EndDate}"); eventTeams.AppendLine($"{@event.Description}"); eventTeams.AppendLine("Teams:"); foreach (var name in @event.TeamNames) { eventTeams.AppendLine($"--{name}"); } return(eventTeams.ToString().TrimEnd()); } }
public string DeleteUser() { ShouldLogIn(); using (var db = new TeamBuilderContext()) { var user = AuthenticationManager.GetCurrentUser(db); AuthenticationManager.Logout(); var userToDelete = db.Users.Find(user.Id); userToDelete.IsDeleted = true; db.SaveChanges(); return(user.Username); } }
public string Execute(string[] args) { Check.CheckLength(0, args); AuthenticationManager.Authorize(); User currentUser = AuthenticationManager.GetCurrentUser(); using (TeamBuilderContext context = new TeamBuilderContext()) { currentUser.IsDeleted = true; context.Users.Update(currentUser); context.SaveChanges(); AuthenticationManager.LogOut(); } return($"User {currentUser.Username} was deleted successfully!"); }
public string Execute(string[] args) { Check.CheckLenght(0, args); AuthenticationManager.Authorize(); var currentUser = AuthenticationManager.GetCurrentUser(); using (var context = new TeamBuilderContext()) { currentUser.IsDeleted = true; context.Users.Update(currentUser); context.SaveChanges(); AuthenticationManager.Logout();; } return(string.Format(Constants.SuccessMessages.Delete, currentUser.UserName)); }
private User CorrectUser(string username, string password) { using (var db = new TeamBuilderContext()) { if (db.Users.SingleOrDefault(u => u.Username == username) == null) { return(null); } var user = db.Users.SingleOrDefault(u => u.Username == username); if (user.Password.CompareTo(password) != 0 || user.IsDeleted == true) { return(null); } return(user); } }
public string Execute(string[] inputArgs) { Check.CheckLength(0, inputArgs); AuthenticationManager.Authorize(); User currentUser = AuthenticationManager.GetCurrentUser(); using (var db = new TeamBuilderContext()) { db.Entry(currentUser).State = EntityState.Unchanged; currentUser.IsDeleted = true; db.SaveChanges(); AuthenticationManager.Logout(); } return($"User {currentUser.Username} was deleted successfully!"); }
private void AcceptInvite(User currentUser, string teamName) { using (TeamBuilderContext context = new TeamBuilderContext()) { var teamId = context.Teams.FirstOrDefault(e => e.Name == teamName).Id; var userTeam = new UserTeam() { UserId = currentUser.Id, TeamId = teamId }; var invite = context.Invitations.FirstOrDefault(e => e.InvitedUserId == currentUser.Id && e.TeamId == teamId); invite.IsActive = false; context.UserTeams.Add(userTeam); context.SaveChanges(); } }
private string ShowTeam(string teamName) { using (TeamBuilderContext context = new TeamBuilderContext()) { Team teamToShow = context.Teams.SingleOrDefault(team => team.Name == teamName); StringBuilder sb = new StringBuilder(); sb.AppendLine($"[{teamToShow.Name}] [{teamToShow.Acronym}]"); sb.AppendLine("Members:"); foreach (User member in teamToShow.Members) { sb.AppendLine($"--{member.Username}"); } return(sb.ToString()); } }
private static void CreateCurrentEvent(User currentUser, string eventName, string description, DateTime startDate, DateTime endDate) { var currentEvent = new Event() { Name = eventName, Description = description, StartDate = startDate, EndDate = endDate, CreatorId = currentUser.Id }; using (var db = new TeamBuilderContext()) { ValidateEvent(currentEvent, db); db.Events.Add(currentEvent); db.SaveChanges(); } }
public static bool IsUserExisting(string username) { using (TeamBuilderContext context = new TeamBuilderContext()) { var user = context.Users.FirstOrDefault(u => u.Username == username); if (user == null) { return(false); } if (user.IsDeleted) { return(false); } return(true); } }
public string Execute(string[] inputArgs) { //• AcceptInvite <teamName> Check.CheckLength(1, inputArgs); AuthenticationManager.Authorize(); string teamName = inputArgs[0]; using (var context = new TeamBuilderContext()) { var team = context.Teams.FirstOrDefault(t => t.Name == teamName); if (team == null) { throw new ArgumentException(Constants.ErrorMessages.TeamNotFound, teamName); } var currentUser = AuthenticationManager.GetCurrentUser(); if (!context.Invitations.Any(i => i.InvitedUserId == currentUser.Id && i.TeamId == team.Id)) { throw new ArgumentException(Constants.ErrorMessages.InviteNotFound, teamName); } var invitation = context.Invitations.FirstOrDefault( i => i.InvitedUserId == currentUser.Id && i.Team.Name == teamName); context.Invitations.Remove(invitation); context.UserTeams.Add(new UserTeam { UserId = currentUser.Id, TeamId = team.Id }); context.SaveChanges(); return($"User {currentUser.Username} joined team {teamName}!"); } }
private static void AddTeamTo(string eventName, string teamName) { using (var db = new TeamBuilderContext()) { var events = db .Events .Where(e => e.Name == eventName) .ToList(); var eventId = default(int); if (events.Count > 1) { DateTime?latestDate = events .Where(e => e.StartDate.HasValue) .Max(e => e.StartDate) .Value; eventId = events .Single(e => e.StartDate == latestDate) .Id; } else { eventId = events.First().Id; } var teamId = db .Teams .First(t => t.Name == teamName) .Id; var currentTeamEvent = new TeamEvent() { EventId = eventId, TeamId = teamId }; db.TeamEvents.Add(currentTeamEvent); db.SaveChanges(); } }
public string Execute(IUserSession userSession, params string[] data) { User user = userSession.User; if (user == null) { throw new InvalidOperationException(Constants.ErrorMessages.LoginFirst); } var context = new TeamBuilderContext(); var userFromDatabase = context.Users.FirstOrDefault(u => u.UserId == user.UserId); userFromDatabase.IsDeleted = true; context.SaveChanges(); userSession.LogOut(); return($"User {user.Username} was deleted successfully!"); }
private string LoadEvent(string eventName) { StringBuilder sb = new StringBuilder(); using (TeamBuilderContext ctx = new TeamBuilderContext()) { Event ev = ctx.Events.Include("ParticipatingTeams").OrderByDescending(e => e.StartDate).FirstOrDefault(e => e.Name == eventName); sb.AppendLine($"{ev.Name} {ev.StartDate} {ev.EndDate} {ev.Description}"); sb.AppendLine($"Teams: {ev.ParticipatingTeams.Count()}"); foreach (var team in ev.ParticipatingTeams) { sb.AppendLine($"--{team.Name}, Members: {team.Members.Count}"); foreach (var member in team.Members) { sb.AppendLine($"----{member.Username} {member.Age}"); } } } return(sb.ToString().Trim()); }
private void SendInvitation(string teamName, string username) { using (TeamBuilderContext ctx = new TeamBuilderContext()) { Team team = ctx.Teams.FirstOrDefault(t => t.Name == teamName); User user = ctx.Users.FirstOrDefault(u => u.Username == username); Invitation inv = new Invitation { TeamId = team.Id, InvitedUserId = user.Id }; if (team.CreatorId == user.Id) { inv.IsActive = false; team.Members.Add(user); } ctx.Invitations.Add(inv); ctx.SaveChanges(); } }
public void Create(string teamName, string acronym, string description) { using (var context = new TeamBuilderContext()) { string currentUserUsername = AuthenticationService.GetCurrentUser().Username; User creator = context.Users.FirstOrDefault(u => u.Username == currentUserUsername); Team newTeam = new Team { Name = teamName, Acronym = acronym, Description = description, Creator = creator }; context.Teams.Add(newTeam); context.SaveChanges(); } }
public static void AcceptInvite(string teamName) { using (TeamBuilderContext db = new TeamBuilderContext()) { var team = db.Teams.FirstOrDefault(t => t.Name == teamName); var user = AuthenticationManager.GetCurrentUser(); db.Users.Attach(user); user.Teams.Add(team); Invitation invitation = db.Invitations.FirstOrDefault(i => i.TeamId == team.Id && i.InvitedUserId == user.Id && i.IsActive); invitation.IsActive = false; db.SaveChanges(); } }
private void SendInvite(string teamName, string username) { using (TeamBuilderContext context = new TeamBuilderContext()) { Team team = context.Teams.FirstOrDefault(t => t.Name == teamName); User user = context.Users.FirstOrDefault(u => u.Username == username); Invitation invitation = new Invitation() { InvitedUser = user, Team = team }; if (team.CreatorId == user.Id) { team.Members.Add(user); invitation.IsActive = false; } context.Invitations.Add(invitation); context.SaveChanges(); } }
public static string ShowDetails(string teamName) { using (TeamBuilderContext db = new TeamBuilderContext()) { var team = db.Teams.FirstOrDefault(t => t.Name == teamName); string result = $"{teamName} {team.Acronym}\n"; if (team.Members.Any()) { result += "Members:"; } foreach (var teamMember in team.Members) { result += $"\n--{teamMember.Username}"; } return(result); } }
private static void KickUser(string teamName, string userName) { using (var db = new TeamBuilderContext()) { var team = db .Teams .First(t => t.Name == teamName); var userTobeKicked = db .Users .First(u => u.Username == userName); var membership = db .UserTeams .First(t => t.TeamId == team.Id && t.UserId == userTobeKicked.Id); db.UserTeams.Remove(membership); db.SaveChanges(); } }
public string Excecute(string[] inputArgs) { string teamName = inputArgs[0]; using (var db = new TeamBuilderContext()) { Team team = db.Teams.Include(t => t.Creator) .SingleOrDefault(t => t.Name == teamName); if (team == null) { throw new ArgumentException($"Team {teamName} not found!"); } if (Session.User == null) { throw new InvalidOperationException("You should login first!"); } Invitation invite = db.Invitations .SingleOrDefault(i => i.TeamId == team.Id); if (invite == null || invite.IsActive == false) { throw new ArgumentException($"Invite from {teamName} is not found!"); } User user = Session.User; if (invite.InvitedUserId != user.Id) { throw new ArgumentException($"You were not invited!"); } invite.IsActive = false; db.SaveChanges(); return($"Invite from {teamName} declined."); } }
// <eventName> public override string Execute(TeamBuilderContext context) { base.CmdArgsExactLengthValidation(ArgsExactLength); var eventName = this.CmdArgs[0]; var currentDate = DateTime.Now; var @event = context.Events .Select(e => new { e.Name, e.StartDate, e.EndDate, e.Description, Teams = e.EventTeams.Select(et => et.Team.Name) }) .Where(e => e.StartDate != null) .OrderByDescending(e => e.StartDate) .FirstOrDefault(e => e.Name.Equals(eventName, StringComparison.OrdinalIgnoreCase)); if (@event == null) { throw new ArgumentException(string.Format(EventNotFoundExceptionMessage, eventName)); } var sb = new StringBuilder(); sb.AppendLine($"{@event.Name} {@event.StartDate} {@event?.EndDate}"); if (@event.Description != null) { sb.AppendLine(@event.Description); } sb.AppendLine("Teams:"); foreach (var name in @event.Teams) { sb.AppendLine($"-{name}"); } return(sb.ToString().TrimEnd()); }
//[no args] public static string Execute(string[] data) { Check.CheckLenght(0, data); //if there is no logged user = exception AuthenticationManager.Autorized(); var currentUser = AuthenticationManager.GetCurrentUser(); using (var db = new TeamBuilderContext()) { var user = db.Users.SingleOrDefault(c => c.Username == currentUser.Username); user.IsDeleted = true; db.SaveChanges(); AuthenticationManager.Logout(); } return($"User {currentUser.Username} was deleted successfully!"); }