예제 #1
0
 public async Task <IActionResult> Profile([Bind("Username,Email,Firstname,Lastname,Birthdate,ExternalId,PictureUrl,UserId")] User user)
 {
     ViewData["CurrentUser"] = user;
     if (ModelState.IsValid)
     {
         try
         {
             _context.Update(user);
             await _context.SaveChangesAsync();
         }
         catch (DbUpdateConcurrencyException)
         {
             if (!UserExists(user.UserId))
             {
                 return(NotFound());
             }
             else
             {
                 throw;
             }
         }
         return(RedirectToAction(nameof(Profile)));
     }
     return(View(user));
 }
        public async Task <IViewComponentResult> InvokeAsync(int teamId, int userId)
        {
            ViewData["CurrentUser"] = GetCurrentUser();
            var team = _context.Team.Find(teamId);

            ViewData["TeamOwner"] = _context.User.Where(x => x.UserId == team.FkOwner).FirstOrDefault();
            if (userId > 0)
            {
                var user = _context.TeamMember.FirstOrDefault(x => x.FkUser == userId && x.FkTeam == teamId);

                if (user == null)
                {
                    var invites = _context.TeamInvitation.Where(x => x.FkUser == userId);
                    _context.RemoveRange(invites);
                    _context.TeamMember.Add(new TeamMember {
                        FkTeam = teamId, FkUser = userId
                    });
                    await _context.SaveChangesAsync();
                }
                else
                {
                    _context.TeamMember.Remove(user);
                    await _context.SaveChangesAsync();
                }
            }
            var teamMemberList = _context.TeamMember.Where(p => p.FkTeam == teamId).Include(x => x.FkUserNavigation);

            return(View(teamMemberList));
        }
        public async Task <IActionResult> Create([Bind("Name,Description,TeamId,FkGameType")] Team team)
        {
            if (ModelState.IsValid)
            {
                var currentUserId = GetCurrentUser().UserId;
                team.FkOwner = currentUserId;
                _context.Add(team);
                await _context.SaveChangesAsync();

                var teamMember = new TeamMember()
                {
                    FkTeam = team.TeamId, FkUser = currentUserId
                };
                _context.Add(teamMember);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["FkGameType"] = new SelectList(_context.GameType, "GameTypeId", "Name");
            var sportbookDatabaseContext = _context.Team.Include(t => t.FkGameTypeNavigation).Include(t => t.FkOwnerNavigation);
            var teamsParticipations      = _context.TeamMember.Where(t => t.FkUser == GetCurrentUser().UserId);
            var data = from first in sportbookDatabaseContext
                       join second in teamsParticipations
                       on first.TeamId equals second.FkTeam
                       select first;

            ViewData["Teams"] = data;
            return(View("Index", team));
        }
        public async Task <IViewComponentResult> InvokeAsync(int eventId, int userId)
        {
            ViewData["CurrentUser"] = GetCurrentUser();
            var eventItem = _context.Event.Find(eventId);

            ViewData["EventMax"]  = eventItem.MaxParticipantAmt;
            ViewData["TeamOwner"] = _context.User.Where(x => x.UserId == eventItem.FkOwner).FirstOrDefault();
            var eventMemberList = _context.Participant.Where(p => p.FkEvent == eventId).Include(x => x.FkUserNavigation);

            if (eventItem.MaxParticipantAmt > eventMemberList.Count())
            {
                if (userId > 0)
                {
                    var user = _context.Participant.FirstOrDefault(x => x.FkUser == userId && x.FkEvent == eventId);

                    if (user == null)
                    {
                        var invites = _context.EventInvitation.Where(x => x.FkUser == userId);
                        _context.RemoveRange(invites);
                        _context.Participant.Add(new Participant {
                            FkEvent = eventId, FkUser = userId
                        });
                        await _context.SaveChangesAsync();
                    }
                    else
                    {
                        _context.Participant.Remove(user);
                        await _context.SaveChangesAsync();
                    }
                }
            }


            return(View(eventMemberList));
        }
예제 #5
0
        public async Task <Task> CreateOnSignUp(TicketReceivedContext ticketReceivedContext)
        {
            string       username  = null;
            string       firstName = null;
            string       lastName  = null;
            string       email     = null;
            bool         isNewUser = false;
            List <Claim> claims    = ticketReceivedContext.Principal.Claims.ToList();
            var          claim     = claims.FirstOrDefault(x => x.Type.EndsWith("isNewUser"));
            string       userOId   = claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier).Value;
            var          userInfo  = _context.User.FirstOrDefault(s => s.ExternalId == userOId);

            if ((userInfo == null) || bool.Parse(claim.Value))
            {
                isNewUser = true;
            }

            if (isNewUser)
            {
                ticketReceivedContext.ReturnUri = "/Users/Profile";
                username = claims.FirstOrDefault(x => x.Type.EndsWith("nickname")).Value;
                //claims.First(x => x.Type == ClaimTypes.)
                if (claims.Find(c => (c.Type == ClaimTypes.NameIdentifier)).Value.StartsWith("google"))
                {
                    if (claims.FirstOrDefault(x => x.Type.Contains("givenname")) != null)
                    {
                        firstName = claims.FirstOrDefault(x => x.Type.Contains("givenname")).Value;
                    }
                    if (claims.FirstOrDefault(x => x.Type.Contains("surname")) != null)
                    {
                        lastName = (claims.FirstOrDefault(x => x.Type.Contains("surname")).Value);
                    }
                    email = username + "@gmail.com";
                }
                // claims.FirstOrDefault(x => x.Type.EndsWith("name")).Value;
                if (claims.Find(c => (c.Type == ClaimTypes.NameIdentifier)).Value.StartsWith("auth0"))
                {
                    email = claims.FirstOrDefault(x => x.Type.StartsWith("name")).Value;
                }
                var pictureURL = claims.FirstOrDefault(x => x.Type.EndsWith("picture")).Value;
                if (String.IsNullOrEmpty(pictureURL))
                {
                    pictureURL = "http://ssl.gstatic.com/accounts/ui/avatar_2x.png";
                }
                User user = new User()
                {
                    Firstname = firstName, Lastname = lastName, ExternalId = userOId, Username = username, Email = email, PictureUrl = pictureURL
                };
                //insert new value into DB
                _context.Add(user);
                await _context.SaveChangesAsync();
            }

            return(Task.CompletedTask);
        }
예제 #6
0
        public async Task <IActionResult> Create([Bind("Title,MaxParticipantAmt,StartTime,EndTime,IsPrivate,FkLocation,FkGameType")] Event @event)
        {
            @event.IsTeamEvent = false;
            var user = GetCurrentUser();

            @event.FkOwner = user.UserId;
            if (ModelState.IsValid)
            {
                _context.Add(@event);
                await _context.SaveChangesAsync();

                _context.Participant.Add(new Models.Participant()
                {
                    FkEvent = @event.EventId, FkUser = user.UserId
                });
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Sports)));
            }
            var sportbookDatabaseContext  = _context.Location.Include(t => t.FkGameTypeNavigation).Where(e => e.FkGameTypeNavigation.IsOnline == false);
            List <LocationData> locations = new List <LocationData>();

            foreach (var item in sportbookDatabaseContext)
            {
                locations.Add(new LocationData(item.Longitude, item.Latitude, item.Address, item.FkGameTypeNavigation.Name, item.LocationId, item.FkGameType));
            }
            ViewData["Locations"] = locations;
            ViewData["GoogleApi"] = google_key;
            return(View(@event));
        }
        //[ValidateAntiForgeryToken]
        public async Task <IActionResult> CreateEvent([Bind("Title,MaxParticipantAmt,StartTime,EndTime,IsPrivate,IsTeamEvent,FkOwner,FkGameType")] Event @event)
        {
            var user   = GetCurrentUser();
            int teamId = 0;

            if (@event.IsTeamEvent)
            {
                var team = _context.Team.FirstOrDefault(x => x.TeamId == @event.FkOwner);
                teamId            = team.TeamId;
                @event.FkGameType = team.FkGameType;
                @event.FkOwner    = user.UserId;
            }
            if (ModelState.IsValid)
            {
                _context.Add(@event);
                await _context.SaveChangesAsync();

                if ([email protected])
                {
                    _context.Participant.Add(new Models.Participant()
                    {
                        FkEvent = @event.EventId, FkUser = @event.FkOwner
                    });
                }
                else
                {
                    _context.Participant.Add(new Models.Participant()
                    {
                        FkEvent = @event.EventId, FkUser = user.UserId, FkTeam = teamId
                    });
                }

                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Esports)));
            }
            User currentUser     = (from s in _context.User select s).Where(s => s.ExternalId == HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value).FirstOrDefault();
            var  sportsGameTypes = _context.GameType.Where(x => x.IsOnline == true);

            ViewData["FkGameType"] = new SelectList(sportsGameTypes, "GameTypeId", "Name");
            ViewData["FkOwner"]    = currentUser;
            var sportbookDatabaseContext = _context.Team.Include(t => t.FkGameTypeNavigation).Include(t => t.FkOwnerNavigation);
            var teamsParticipations      = _context.TeamMember.Where(t => t.FkUser == currentUser.UserId);
            var data = from first in sportbookDatabaseContext
                       join second in teamsParticipations
                       on first.TeamId equals second.FkTeam
                       select first;

            ViewData["Teams"] = data;
            if ([email protected])
            {
                ViewData["SecondFailed"] = false;
            }
            else
            {
                ViewData["SecondFailed"] = true;
                ViewData["teamId"]       = teamId;
            }
            return(View(@event));
        }
        public async Task <IViewComponentResult> InvokeAsync(int teamId, int userId)
        {
            ViewData["CurrentUser"] = GetCurrentUser();
            var team = _context.Team.Find(teamId);

            ViewData["TeamOwner"] = _context.User.Where(x => x.UserId == team.FkOwner).FirstOrDefault();
            if (userId > 0)     // if Invite is clicked
            {
                var user = _context.TeamMember.FirstOrDefault(x => x.FkUser == userId && x.FkTeam == teamId);

                if (user == null)
                {                                                                                                  // user is not a team member
                    var userAlreadyInvited = _context.TeamInvitation.Any(x => x.FkUser == userId && x.IsAccepted); // FALSE if user hasn't accepted an invitation
                    if (!userAlreadyInvited)
                    {
                        _context.TeamInvitation.Add(new TeamInvitation()
                        {
                            FkTeam = teamId, FkUser = userId
                        });
                        await _context.SaveChangesAsync();
                    }
                }
            }
            //var participantList = _context.User.Where(u => u.UserId == eventId).Include(x => x.FkUserNavigation);
            var alreadyParticipants = from users in _context.User
                                      join teamMembers in _context.TeamMember.Where(x => x.FkTeam == teamId)
                                      on users.UserId equals teamMembers.FkUser
                                      select users;
            var notAcceptedInvite = from users in _context.User
                                    join invitations in _context.TeamInvitation.Where(x => x.IsAccepted == false && x.FkTeam == teamId)
                                    on users.UserId equals invitations.FkUser
                                    select users;

            var userList = _context.User.Except(alreadyParticipants).Except(notAcceptedInvite);

            return(View(userList));
        }
예제 #9
0
        public async Task <IViewComponentResult> InvokeAsync(int eventId, int teamId)
        {
            var team       = _context.Team.Find(teamId);
            var scrimEvent = _context.Event.Find(eventId);
            var owner      = _context.User.Find(scrimEvent.FkOwner);

            var currentUser = GetCurrentUser();
            var participant = _context.Participant.FirstOrDefault(x => x.FkTeam == teamId && x.FkEvent == eventId);

            if (participant == null)
            {
                if (team != null && owner != null)
                {
                    var emailModel = new EmailModel(owner.Email,                                                                                                                                                                                                                                                                                                                  // To
                                                    "Scrim opponent accepted match",                                                                                                                                                                                                                                                                                              // Subject
                                                    String.Format("Your event <a href=\"https://sportbook.azurewebsites.net/Esports/TeamEvent?id={4}\" target=\"_blank\"><b>{0}</b></a> was accepted by opponent team <b>{1}</b> <br> Event start time: {2} <br> Event end time: {3}", scrimEvent.Title, team.Name, scrimEvent.StartTime, scrimEvent.EndTime, scrimEvent.EventId) // Message
                                                    );
                    _emailHelper.SendEmail(emailModel);
                }
                _context.Participant.Add(new Models.Participant()
                {
                    FkEvent = eventId, FkTeam = teamId, FkUser = currentUser.UserId
                });
                var teamMembers = _context.TeamMember.Where(x => x.FkTeam == teamId).Include(x => x.FkUserNavigation);
                ViewData["teamMembers"] = teamMembers;
                ViewData["team"]        = team;
                ViewData["create"]      = true;
            }
            else
            {
                _context.Participant.Remove(participant);
                ViewData["create"] = false;
            }
            await _context.SaveChangesAsync();

            return(View());
        }
예제 #10
0
        public async Task <IActionResult> CitiesCreate([Bind("Name,CityId")] City city)
        {
            if (ModelState.IsValid)
            {
                _context.Add(city);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Cities)));
            }
            return(View("~/Views/Admin/Cities/Create.cshtml", city));
        }