Пример #1
0
 private void init()
 {
     party         = new PartyDTO();
     DisplayName   = BasicInfoAppLocalizedResources.ManagePartyCustomActions;
     PrivilegeList = new List <Privilege>();
     UserActions   = new Dictionary <int, bool>();
 }
        public async Task <List <PartyDTO> > GetPartyList(string ConnectionString)
        {
            await Task.Run(() =>
            {
                partylist = new List <PartyDTO>();
                try
                {
                    using (NpgsqlDataReader dr = NPGSqlHelper.ExecuteReader(ConnectionString, CommandType.Text, "select t3.contactid,(coalesce(t3.name,'')||' '||coalesce(t3.surname,'')) as name,t3.titlename,contactreferenceid,t1.businessentitycontactno,t1.businessentityemailid,'PARTY' as partyreftype from tblmstparty t3 join  tblmstcontact t1 on t1.contactid=t3.contactid join tblmststatus t2 on t1.statusid=t2.statusid where   t3.statusid= " + Convert.ToInt32(Status.Active) + " order by name;"))
                    {
                        while (dr.Read())
                        {
                            PartyDTO _PartyDTO          = new PartyDTO();
                            _PartyDTO.ppartyid          = Convert.ToInt64(dr["contactid"]);
                            _PartyDTO.ppartyname        = Convert.ToString(dr["name"]);
                            _PartyDTO.ppartyreferenceid = Convert.ToString(dr["contactreferenceid"]);
                            _PartyDTO.ppartyreftype     = Convert.ToString(dr["partyreftype"]);
                            _PartyDTO.ppartycontactno   = Convert.ToInt64(dr["businessentitycontactno"]);
                            _PartyDTO.ppartyemailid     = Convert.ToString(dr["businessentityemailid"]);
                            _PartyDTO.ppartypannumber   = Convert.ToString("");
                            partylist.Add(_PartyDTO);
                        }
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            });

            return(partylist);
        }
Пример #3
0
 public PartyDTO GetOldPartyByID(int id)
 {
     try
     {
         PartyDTO party = new PartyDTO();
         using (connection = DataConnection.GetConnection())
         {
             connection.Open();
             using (MySqlCommand command = new MySqlCommand("SELECT * FROM OldParty WHERE ID=@ID", connection))
             {
                 command.Parameters.AddWithValue("@PartyID", id);
                 using (MySqlDataReader reader = command.ExecuteReader())
                 {
                     while (reader.Read())
                     {
                         party.ID           = (int)reader["PartyID"];
                         party.Abbreviation = (string)reader["Abbreviation"];
                         party.Name         = (string)reader["Name"];
                         party.Leader       = (string)reader["Leader"];
                     }
                     return(party);
                 }
             }
         }
     }
     catch (MySqlException)
     {
         throw new GetPartyByIDFailedException();
     }
 }
Пример #4
0
        /// <summary>
        /// Create a new Dungeon Master with the provided information from the API request &
        /// Create Request Objects between the new DM and all active players in the database.
        /// </summary>
        /// <param name="dungeonMaster">Dungeon Master information from the API request</param>
        /// <returns>Newly created Dungeon Master</returns>
        public async Task <DungeonMasterDTO> CreateDungeonMaster(DungeonMasterDTO dungeonMasterDTO)
        {
            DungeonMaster dungeonMaster = DeconstructDTO(dungeonMasterDTO);

            _context.Entry(dungeonMaster).State = EntityState.Added;
            var result = await _context.SaveChangesAsync();

            dungeonMasterDTO = await BuildDTO(dungeonMaster);

            dungeonMasterDTO.ActiveRequests = new List <RequestDTO>();

            var players = await _context.Players.Where(x => x.PartyId == 1).ToListAsync();

            if (players != null)
            {
                foreach (var player in players)
                {
                    RequestDTO newReq = await _request.CreateRequest(player.Id, dungeonMaster.Id);

                    dungeonMasterDTO.ActiveRequests.Add(newReq);
                }
            }
            PartyDTO newParty = new PartyDTO
            {
                DungeonMasterId = dungeonMasterDTO.Id,
                MaxSize         = dungeonMasterDTO.PartySize,
                Full            = false
            };

            dungeonMasterDTO.Party = await _party.CreateParty(newParty);

            dungeonMasterDTO.Id = dungeonMaster.Id;
            return(dungeonMasterDTO);
        }
Пример #5
0
        /// <summary>
        /// Update a specific party
        /// </summary>
        /// <param name="party">Updated party information</param>
        /// <returns>Task of completion for party update</returns>
        public async Task UpdateParty(PartyDTO partyDTO)
        {
            Party party = DeconstructDTO(partyDTO);

            _context.Entry(party).State = EntityState.Modified;
            await _context.SaveChangesAsync();
        }
Пример #6
0
        public void ShowCustomActionsManageViews(PartyDTO party, bool isgroup, string groupId)
        {
            var view = ServiceLocator.Current.GetInstance <IPartyCustomActionsView>();

            ((PartyCustomActionsVM)view.ViewModel).Load(party, isgroup, groupId);
            viewManager.ShowInDialog(view);
        }
Пример #7
0
 public List <PartyDTO> GetPartyHistory(PartyDTO party)
 {
     try
     {
         using (connection = DataConnection.GetConnection())
         {
             connection.Open();
             MySqlCommand command = new MySqlCommand($"SELECT * FROM OldParty WHERE PartyID=PartyID", connection);
             command.Parameters.AddWithValue("@PartyID", party.ID);
             MySqlDataReader reader  = command.ExecuteReader();
             List <PartyDTO> parties = new List <PartyDTO>();
             while (reader.Read())
             {
                 parties.Add(new PartyDTO()
                 {
                     ID           = (int)reader["ID"],
                     Abbreviation = (string)reader["Abbreviation"],
                     Name         = (string)reader["Name"],
                     Leader       = (string)reader["Leader"]
                 });
             }
             return(parties);
         }
     }
     catch (MySqlException)
     {
         throw new SearchFailedException("");
     }
 }
Пример #8
0
        public async Task CanDeleteParty()
        {
            DungeonMasterDTO newDm = new DungeonMasterDTO()
            {
                UserId          = "test1",
                CampaignName    = "Test Campaign",
                CampaignDesc    = "Test Campaign Description",
                ExperienceLevel = "Medium",
                PersonalBio     = "Test Personal Bio"
            };
            var dmRepo = BuildDmDb();

            newDm = await dmRepo.CreateDungeonMaster(newDm);

            PartyDTO newParty = new PartyDTO()
            {
                DungeonMasterId = newDm.Id,
                MaxSize         = 4,
                Full            = false
            };
            var repo   = BuildDb();
            var create = await repo.CreateParty(newParty);

            Assert.NotNull(create);

            await repo.DeleteParty(newDm.Id);

            var result = await repo.GetPartyById(create.Id);

            Assert.Null(result);
        }
Пример #9
0
        /// <summary>
        /// Creates a new party in the database
        /// </summary>
        /// <param name="party">Party information to be added to database</param>
        /// <returns>Newly created party</returns>
        public async Task <PartyDTO> CreateParty(PartyDTO partyDTO)
        {
            Party party = DeconstructDTO(partyDTO);

            _context.Entry(party).State = EntityState.Added;
            await _context.SaveChangesAsync();

            return(await BuildPartyDTO(party));
        }
Пример #10
0
        public async Task <IActionResult> PutParty(int id, PartyDTO party)
        {
            if (id != party.Id)
            {
                return(BadRequest());
            }

            await _party.UpdateParty(party);

            return(NoContent());
        }
Пример #11
0
        /// <summary>
        /// Deconstruct a PartyDTO object into a Party Object
        /// </summary>
        /// <param name="partyDTO">PartyDTO object to deconstruct</param>
        /// <returns>Party object</returns>
        public Party DeconstructDTO(PartyDTO partyDTO)
        {
            Party party = new Party
            {
                Id = partyDTO.Id,
                DungeonMasterId = partyDTO.DungeonMasterId,
                MaxSize         = partyDTO.MaxSize,
                Full            = partyDTO.Full,
            };

            return(party);
        }
        public IActionResult Get(string userEmail)
        {
            List <Party>    userParties     = _repository.GetUserParties(userEmail);
            List <PartyDTO> userPartiesDTOs = new List <PartyDTO>();

            foreach (var party in userParties)
            {
                PartyDTO tempParty = _mapper.Map <Party, PartyDTO>(party);
                userPartiesDTOs.Add(tempParty);
            }
            return(Ok(userPartiesDTOs));
        }
Пример #13
0
        public static Party GetPartyFromDTO(PartyDTO dto)
        {
            Party party = new Party
            {
                ID           = dto.ID,
                Abbreviation = dto.Abbreviation,
                Name         = dto.Name,
                Leader       = dto.Leader
            };

            return(party);
        }
Пример #14
0
        public static PartyDTO GetPartyDTO(Party party)
        {
            PartyDTO dto = new PartyDTO
            {
                ID           = party.ID,
                Abbreviation = party.Abbreviation,
                Name         = party.Name,
                Leader       = party.Leader
            };

            return(dto);
        }
        public async Task <IActionResult> Post([FromBody] PartyDTO partyDTO)
        {
            if (ModelState.IsValid == false)
            {
                return(BadRequest("Bad request."));
            }
            Party tempParty  = _mapper.Map <PartyDTO, Party>(partyDTO);
            Party addedParty = await _repository.AddParty(tempParty);

            // adding the creator as a member of the party
            await addCreatorToParty(addedParty);

            return(Ok($"Party \"{addedParty.Name}\" was created successfully."));
        }
Пример #16
0
        public async Task CanUpdateParty()
        {
            var      repo           = BuildDb();
            PartyDTO newPartyUpdate = new PartyDTO()
            {
                Id = 1,
                DungeonMasterId = 1,
                MaxSize         = 93,
                Full            = false
            };

            await repo.UpdateParty(newPartyUpdate);

            var result = await repo.GetPartyById(1);

            Assert.NotNull(result);
            Assert.Equal(93, result.MaxSize);
        }
Пример #17
0
        /// <summary>
        /// Build a PartyDTO object out of a Party Object
        /// </summary>
        /// <param name="party">Party object to build DTO from</param>
        /// <returns>PartyDTO object</returns>
        public async Task <PartyDTO> BuildPartyDTO(Party party)
        {
            DungeonMaster dm = await _context.DungeonMasters.FindAsync(party.DungeonMasterId);

            List <Player> members = await _context.Players.Where(x => x.PartyId == party.Id).ToListAsync();

            PartyDTO dto = new PartyDTO
            {
                Id = party.Id,
                DungeonMasterId  = party.DungeonMasterId,
                MaxSize          = party.MaxSize,
                Full             = party.Full,
                PlayersInParty   = new List <PartyPlayerDTO>(),
                DungeonMasterDTO = new PartyDmDTO
                {
                    Id              = dm.Id,
                    UserName        = dm.UserName,
                    UserEmail       = dm.UserEmail,
                    CampaignName    = dm.CampaignName,
                    CampaignDesc    = dm.CampaignDesc,
                    ExperienceLevel = dm.ExperienceLevel.ToString(),
                    PersonalBio     = dm.PersonalBio,
                    ImageUrl        = dm.ImageUrl
                }
            };

            foreach (Player player in members)
            {
                dto.PlayersInParty.Add(new PartyPlayerDTO
                {
                    Id              = player.Id,
                    ImageUrl        = player.ImageUrl,
                    UserEmail       = player.UserEmail,
                    CharacterName   = player.CharacterName,
                    Class           = player.Class.ToString(),
                    Race            = player.Race.ToString(),
                    ExperienceLevel = player.ExperienceLevel.ToString()
                });
            }
            return(dto);
        }
Пример #18
0
 public void CreateParty(PartyDTO party)
 {
     try
     {
         using (connection = DataConnection.GetConnection())
         {
             connection.Open();
             using (MySqlCommand command = new MySqlCommand("INSERT INTO Party(Abbreviation, Name, Leader) VALUES (@Abbreviation, @Name, @Leader)", connection))
             {
                 command.Parameters.AddWithValue("@Abbreviation", party.Abbreviation);
                 command.Parameters.AddWithValue("@Name", party.Name);
                 command.Parameters.AddWithValue("@Leader", party.Leader);
                 command.ExecuteNonQuery();
             }
         }
     }
     catch (MySqlException)
     {
         throw new CreatingPartyFailedException("We konden de door u ingevulde partij niet aanmaken.");
     }
 }
Пример #19
0
 public void Load(PartyDTO partyDto, bool isgroup, string groupId)
 {
     IsGroup = isgroup;
     Party   = partyDto;
     ShowBusyIndicator();
     userService.GetAllActionTypes((res, exp) => appController.BeginInvokeOnDispatcher(() =>
     {
         HideBusyIndicator();
         if (exp == null)
         {
             PrivilegeList = res.Select(a => new Privilege()
             {
                 ActionType = a, IsGrant = false
             }).ToList();
             setPartyCustomActions(isgroup, groupId);
         }
         else
         {
             appController.HandleException(exp);
         }
     }));
 }
Пример #20
0
 public void Save(PartyDTO party)
 {
     try
     {
         using (connection = DataConnection.GetConnection())
         {
             connection.Open();
             using (MySqlCommand command = new MySqlCommand("UPDATE Party SET Name=@Name, Leader=@Leader, Abbreviation=@Abbreviation WHERE ID=@PartyID", connection))
             {
                 command.Parameters.AddWithValue("@PartyID", party.ID);
                 command.Parameters.AddWithValue("@Name", party.Name);
                 command.Parameters.AddWithValue("@Leader", party.Leader);
                 command.Parameters.AddWithValue("@Abbreviation", party.Abbreviation);
                 command.ExecuteNonQuery();
             }
         }
     }
     catch (MySqlException)
     {
         throw new UpdatingPartyFailedException("Het opslaan van de partij is mislukt.");
     }
 }
Пример #21
0
        public IHttpActionResult JoinParty(PersonDTO personDto)
        {
            if (!User.Identity.IsAuthenticated)
            {
                return(Unauthorized());
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var userId = Guid.Parse(Microsoft.AspNet.Identity.IdentityExtensions.GetUserId(User.Identity));

            var party = db.Parties.Where(p => p.Code == personDto.PartyCode).FirstOrDefault();

            var partyDto = new PartyDTO();

            if (party == null)
            {
                ModelState.AddModelError("PartyCode", string.Format("Party Code '{0}' is not a valid party code.  Confirm the party code with your party host.", personDto.PartyCode));
                return(BadRequest(ModelState));
            }

            partyDto.PartyName = party.Name;

            var person = db.People.Where(p => p.UserId == userId).FirstOrDefault();

            if (db.PartyPersons.Where(p => p.PartyId == party.Id && p.PersonId == person.Id).FirstOrDefault() != null)
            {
                ModelState.AddModelError("PartyPerson", string.Format("You've already joined this party!  Go to your Account Profile page to manage your info.", personDto.PartyCode));
                return(BadRequest(ModelState));
            }

            var partyPerson = new PartyPerson {
                Id = Guid.NewGuid(), PartyId = party.Id, PersonId = person.Id
            };

            db.PartyPersons.Add(partyPerson);

            if (personDto.EnterChili)
            {
                var chef = new Chef {
                    Id = Guid.NewGuid(), PartyPersonId = partyPerson.Id
                };
                db.Chefs.Add(chef);

                var chiliNumber = 0;

                var numberOfChilis = db.Chilis.Count(c => c.PartyId == party.Id);

                if (numberOfChilis >= party.MaxChilis)
                {
                    chiliNumber = numberOfChilis + 1;
                }
                else
                {
                    chiliNumber = randomNumberGenerator.Next(1, party.MaxChilis + 1);

                    while (db.Chilis.Where(c => c.Number == chiliNumber && c.PartyId == party.Id).FirstOrDefault() != null)
                    {
                        chiliNumber = randomNumberGenerator.Next(1, party.MaxChilis + 1);
                    }
                }

                var chili = new Chili {
                    Id = Guid.NewGuid(), ChefId = chef.Id, Name = personDto.ChiliName, Number = chiliNumber, PartyId = party.Id
                };
                db.Chilis.Add(chili);

                partyDto.ChiliNumber = chiliNumber;
            }

            db.SaveChanges();

            return(Ok(partyDto));
        }
        public IHttpActionResult PostParty(PartyDTO partyDto)
        {
            if (!User.Identity.IsAuthenticated)
            {
                return(Unauthorized());
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var userIdString = Microsoft.AspNet.Identity.IdentityExtensions.GetUserId(User.Identity);
            var userId       = Guid.Parse(userIdString);

            var person = db.People.Where(p => p.UserId == userId).FirstOrDefault();

            if (person != null)
            {
                var party = db.Parties.Where(p => p.Id == partyDto.PartyId).FirstOrDefault();

                if (party != null)
                {
                    if (partyDto.PartyDate != null)
                    {
                        party.Date = partyDto.PartyDate;
                    }

                    if (partyDto.PartyName != null)
                    {
                        party.Name = partyDto.PartyName;
                    }

                    if (partyDto.MaxChilis > 0)
                    {
                        party.MaxChilis = partyDto.MaxChilis;
                    }

                    party.HasVotingStarted = partyDto.HasVotingStarted;

                    // If votes haven't been tallied yet but the host initiated it, tally the results
                    if (!party.HaveVotesBeenTallied && partyDto.HaveVotesBeenTallied)
                    {
                        var chiliPoints = new Dictionary <Guid, int>();
                        db.Votes.Where(v => db.Ballots.Where(b => db.PartyPersons.Where(pp => pp.PartyId == party.Id).Select(pp => pp.Id).Contains(b.VoterId)).Select(b => b.Id).Contains(v.BallotId)).GroupBy(v => v.ChiliId).ToList().ForEach(g => chiliPoints.Add(g.First().ChiliId, g.Sum(v => v.Points)));
                        chiliPoints.Keys.ToList().ForEach(k => db.Chilis.Where(c => c.Id == k).FirstOrDefault().Votes = chiliPoints[k]);

                        db.SaveChanges();

                        var partyChilis = db.Chilis.Where(c => c.PartyId == party.Id).OrderByDescending(c => c.Votes).ToList();

                        // Check for tie for first place
                        var firstPlaceChilis = partyChilis.Where(pc => pc.Votes == partyChilis.Max(p => p.Votes));

                        if (firstPlaceChilis.Count() > 1)
                        {
                            // See if any one of the first place chilis has more first place votes (points == 3)
                            var chilisAndTheirNumberOfFirstPlaceVotes = new Dictionary <Guid, int>();

                            var firstPlaceChiliIds = firstPlaceChilis.Select(f => f.Id);

                            db.Votes.Where(v => firstPlaceChiliIds.Contains(v.ChiliId) && v.Points == 3).GroupBy(v => v.ChiliId).ToList().ForEach(g => chilisAndTheirNumberOfFirstPlaceVotes.Add(g.First().ChiliId, g.Count()));

                            if (chilisAndTheirNumberOfFirstPlaceVotes.Count > 1)
                            {
                                // if there's more than one first place chili that got first place votes, see if one has more than others
                                if (chilisAndTheirNumberOfFirstPlaceVotes.Count(c => c.Value == chilisAndTheirNumberOfFirstPlaceVotes.Max(ch => ch.Value)) > 1)
                                {
                                    // If still tied, see if any one chili has more second place votes (points == 2)
                                    var chilisAndTheirNumberOfSecondPlaceVotes = new Dictionary <Guid, int>();

                                    db.Votes.Where(v => firstPlaceChiliIds.Contains(v.ChiliId) && v.Points == 2).GroupBy(v => v.ChiliId).ToList().ForEach(g => chilisAndTheirNumberOfSecondPlaceVotes.Add(g.First().ChiliId, g.Count()));

                                    if (chilisAndTheirNumberOfSecondPlaceVotes.Count > 1)
                                    {
                                        // if there's more than one first place chili that got second place votes, see if one has more than others
                                        if (chilisAndTheirNumberOfSecondPlaceVotes.Count(c => c.Value == chilisAndTheirNumberOfSecondPlaceVotes.Max(ch => ch.Value)) > 1)
                                        {
                                            // If still tied, well there's a first place tie then
                                            partyChilis.Where(p => chilisAndTheirNumberOfSecondPlaceVotes.Where(c => c.Value == chilisAndTheirNumberOfSecondPlaceVotes.Max(ch => ch.Value)).Select(c => c.Key).Contains(p.Id)).ToList().ForEach(ch => ch.Place = 1);
                                        }
                                        else
                                        {
                                            partyChilis.Where(p => p.Id == chilisAndTheirNumberOfSecondPlaceVotes.OrderByDescending(c => c.Value).Select(c => c.Key).First()).First().Place = 1;
                                        }
                                    }
                                    else
                                    {
                                        partyChilis.Where(p => p.Id == chilisAndTheirNumberOfSecondPlaceVotes.OrderByDescending(c => c.Value).Select(c => c.Key).First()).First().Place = 1;
                                    }
                                }
                                else
                                {
                                    partyChilis.Where(p => p.Id == chilisAndTheirNumberOfFirstPlaceVotes.OrderByDescending(c => c.Value).Select(c => c.Key).First()).First().Place = 1;
                                }
                            }
                            else
                            {
                                partyChilis.Where(p => p.Id == chilisAndTheirNumberOfFirstPlaceVotes.OrderByDescending(c => c.Value).Select(c => c.Key).First()).First().Place = 1;
                            }

                            //Reorder partyChilis by place then by votes
                            partyChilis = partyChilis.Where(c => c.PartyId == party.Id).OrderByDescending(c => c.Place).OrderByDescending(c => c.Votes).ToList();
                        }

                        for (var i = 0; i < partyChilis.Count; i++)
                        {
                            if (partyChilis[i].Place == null)
                            {
                                partyChilis[i].Place = i + 1;
                            }
                        }
                    }

                    party.HaveVotesBeenTallied = partyDto.HaveVotesBeenTallied;

                    var partyPerson = db.PartyPersons.Where(pp => pp.PartyId == party.Id && pp.PersonId == person.Id).FirstOrDefault();

                    if (!partyDto.IsHostUpdate)
                    {
                        if (partyPerson != null)
                        {
                            var chef = db.Chefs.Where(c => c.PartyPersonId == partyPerson.Id).FirstOrDefault();

                            if (chef != null)
                            {
                                var chili = db.Chilis.Where(c => c.ChefId == chef.Id && c.PartyId == party.Id).FirstOrDefault();

                                if (chili != null)
                                {
                                    if (partyDto.EnterChili.HasValue && partyDto.EnterChili.Value)
                                    {
                                        if (chili != null)
                                        {
                                            chili.Name = partyDto.ChiliName;

                                            partyDto.ChiliNumber = chili.Number;
                                        }
                                    }
                                    else
                                    {
                                        db.Chilis.Remove(chili);
                                        db.Chefs.Remove(chef);
                                    }
                                }
                            }
                            else if (partyDto.EnterChili.HasValue && partyDto.EnterChili.Value)
                            {
                                var newChef = new Chef {
                                    Id = Guid.NewGuid(), PartyPersonId = partyPerson.Id
                                };

                                db.Chefs.Add(newChef);

                                var chiliNumber = 0;

                                var numberOfChilis = db.Chilis.Count(c => c.PartyId == party.Id);

                                if (numberOfChilis >= party.MaxChilis)
                                {
                                    chiliNumber = numberOfChilis + 1;
                                }
                                else
                                {
                                    chiliNumber = randomNumberGenerator.Next(1, party.MaxChilis + 1);

                                    while (db.Chilis.Where(c => c.Number == chiliNumber && c.PartyId == party.Id).FirstOrDefault() != null)
                                    {
                                        chiliNumber = randomNumberGenerator.Next(1, party.MaxChilis + 1);
                                    }
                                }

                                var chili = new Chili {
                                    Id = Guid.NewGuid(), ChefId = newChef.Id, Name = partyDto.ChiliName, Number = chiliNumber, PartyId = party.Id
                                };

                                db.Chilis.Add(chili);

                                partyDto.ChiliNumber = chiliNumber;
                            }
                        }
                    }

                    db.SaveChanges();
                }
            }

            return(Ok(partyDto));
        }
        public IHttpActionResult GetParties()
        {
            var isAuthenticationOn = Convert.ToBoolean(ConfigurationManager.AppSettings["IsAuthenticationOn"]);

            if (isAuthenticationOn && !User.Identity.IsAuthenticated)
            {
                return(Unauthorized());
            }

            Guid userId;

            if (isAuthenticationOn)
            {
                var userIdString = Microsoft.AspNet.Identity.IdentityExtensions.GetUserId(User.Identity);
                userId = Guid.Parse(userIdString);
            }
            else
            {
                userId = Guid.Parse("885cfa23-87c3-43cb-9326-8f317087e4f9");
            }

            var person    = db.People.Where(p => p.UserId == userId).FirstOrDefault();
            var personDto = new PersonDTO();

            if (person != null)
            {
                personDto.HostedParties = db.Parties.Where(p => p.HostId == person.Id).ToList();

                var joinedParties = db.Parties.Where(p => db.PartyPersons.Where(pp => pp.PersonId == person.Id).Select(pp => pp.PartyId).Contains(p.Id));

                var joinedPartyDtos = new List <PartyDTO>();

                foreach (var party in joinedParties)
                {
                    var partyDto = new PartyDTO();
                    partyDto.PartyId            = party.Id;
                    partyDto.PartyName          = party.Name;
                    partyDto.PartyDate          = party.Date;
                    partyDto.HostName           = db.People.Where(p => p.Id == party.HostId).Select(p => new { HostName = p.FirstName + " " + p.LastName }).First().HostName;
                    partyDto.HasSubmittedBallot = db.Ballots.Any(b => b.VoterId == db.PartyPersons.Where(pp => pp.PersonId == person.Id && pp.PartyId == party.Id).Select(pp => pp.Id).FirstOrDefault());

                    var partyPerson = db.PartyPersons.Where(p => p.PartyId == party.Id && p.PersonId == person.Id).FirstOrDefault();
                    var chef        = db.Chefs.Where(c => c.PartyPersonId == partyPerson.Id).FirstOrDefault();

                    if (chef != null)
                    {
                        var chili = db.Chilis.Where(c => c.ChefId == chef.Id && c.PartyId == party.Id).FirstOrDefault();

                        partyDto.EnterChili  = chili != null;
                        partyDto.ChiliName   = chili.Name;
                        partyDto.ChiliNumber = chili.Number;
                    }
                    else
                    {
                        partyDto.EnterChili = false;
                    }

                    joinedPartyDtos.Add(partyDto);
                }

                personDto.JoinedParties = joinedPartyDtos;
            }

            return(Ok(personDto));
        }
Пример #24
0
        public async Task CanGetAllParties()
        {
            DungeonMasterDTO newDm = new DungeonMasterDTO()
            {
                UserId          = "test1",
                CampaignName    = "Test Campaign",
                CampaignDesc    = "Test Campaign Description",
                ExperienceLevel = "Medium",
                PersonalBio     = "Test Personal Bio"
            };
            DungeonMasterDTO newDm2 = new DungeonMasterDTO()
            {
                UserId          = "test2",
                CampaignName    = "Test Campaign2",
                CampaignDesc    = "Test Campaign Description2",
                ExperienceLevel = "High",
                PersonalBio     = "Test Personal Bio2"
            };
            DungeonMasterDTO newDm3 = new DungeonMasterDTO()
            {
                UserId          = "test3",
                CampaignName    = "Test Campaign3",
                CampaignDesc    = "Test Campaign Description3",
                ExperienceLevel = "FirstTime",
                PersonalBio     = "Test Personal Bio3"
            };
            var dmRepo = BuildDmDb();

            newDm = await dmRepo.CreateDungeonMaster(newDm);

            newDm2 = await dmRepo.CreateDungeonMaster(newDm2);

            newDm3 = await dmRepo.CreateDungeonMaster(newDm3);

            PartyDTO newParty = new PartyDTO()
            {
                DungeonMasterId = newDm.Id,
                MaxSize         = 4,
                Full            = false
            };
            PartyDTO newParty2 = new PartyDTO()
            {
                DungeonMasterId = newDm2.Id,
                MaxSize         = 133,
                Full            = false
            };
            PartyDTO newParty3 = new PartyDTO()
            {
                DungeonMasterId = newDm3.Id,
                MaxSize         = 8,
                Full            = false
            };
            var repo = BuildDb();
            await repo.CreateParty(newParty);

            await repo.CreateParty(newParty2);

            await repo.CreateParty(newParty3);

            var result = await repo.GetAllParties();

            bool partyInList = false;

            foreach (var item in result)
            {
                if (item.MaxSize == 133)
                {
                    partyInList = true;
                }
            }

            Assert.NotEmpty(result);
            Assert.True(partyInList);
        }
        public IHttpActionResult HostParty(PartyDTO partyDto)
        {
            if (!User.Identity.IsAuthenticated)
            {
                return(Unauthorized());
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var userIdString = Microsoft.AspNet.Identity.IdentityExtensions.GetUserId(User.Identity);
            var userId       = Guid.Parse(userIdString);

            var person = db.People.Where(p => p.UserId == userId).FirstOrDefault();

            var returnedPartyDto = new PartyDTO();

            var partyCode = Utilities.Utilities.GeneratePartyCode(4);

            while (db.Parties.Where(p => p.Code == partyCode).FirstOrDefault() != null)
            {
                partyCode = Utilities.Utilities.GeneratePartyCode(4);
            }

            var party = new Party {
                Id = Guid.NewGuid(), Name = partyDto.PartyName, Date = partyDto.PartyDate, Code = partyCode, HostId = person.Id, MaxChilis = partyDto.MaxChilis
            };

            db.Parties.Add(party);

            returnedPartyDto.PartyCode = partyCode;

            var partyPerson = new PartyPerson {
                Id = Guid.NewGuid(), PartyId = party.Id, PersonId = person.Id
            };

            db.PartyPersons.Add(partyPerson);

            if (partyDto.EnterChili.HasValue && partyDto.EnterChili.Value)
            {
                var chef = new Chef {
                    Id = Guid.NewGuid(), PartyPersonId = partyPerson.Id
                };

                db.Chefs.Add(chef);

                var chiliNumber = 0;

                var numberOfChilis = db.Chilis.Count(c => c.PartyId == party.Id);

                if (numberOfChilis >= party.MaxChilis)
                {
                    chiliNumber = numberOfChilis + 1;
                }
                else
                {
                    chiliNumber = randomNumberGenerator.Next(1, party.MaxChilis + 1);

                    while (db.Chilis.Where(c => c.Number == chiliNumber && c.PartyId == party.Id).FirstOrDefault() != null)
                    {
                        chiliNumber = randomNumberGenerator.Next(1, party.MaxChilis + 1);
                    }
                }

                var chili = new Chili {
                    Id = Guid.NewGuid(), ChefId = chef.Id, Name = partyDto.ChiliName, Number = chiliNumber, PartyId = party.Id
                };

                db.Chilis.Add(chili);

                returnedPartyDto.ChiliNumber = chiliNumber;
            }

            db.SaveChanges();

            return(Ok(returnedPartyDto));
        }
Пример #26
0
        public async Task <ActionResult <Party> > PostParty(PartyDTO party)
        {
            var result = await _party.CreateParty(party);

            return(CreatedAtAction("GetParty", new { id = result.Id }, party));
        }
Пример #27
0
 public PartyCustomActionsVM()
 {
     BasicInfoAppLocalizedResources = new BasicInfoAppLocalizedResources();
     init();
     party = new PartyDTO();
 }
Пример #28
0
 public void CreateParty(PartyDTO party)
 {
     Context.CreateParty(party);
 }
Пример #29
0
 public void Save(PartyDTO party)
 {
     Context.Save(party);
 }
Пример #30
0
 public List <PartyDTO> GetPartyHistory(PartyDTO party)
 {
     return(Context.GetPartyHistory(party));
 }