/// <summary> /// Редактирование командировки. /// </summary> /// <param name="businessTrip">Командировка.</param> /// <param name="AddDirectionIds">Ид новых направлений у командировки.</param> /// <param name="DeleteDirectionIds">Ид направлений, которые необходимо удалить.</param> public void UpdateParty(Party party, List <int> addPersonIds, List <int> deletePersonIds) { using (var businessTripContex = new BusinessTripContext()) { businessTripContex.Entry(party).State = EntityState.Modified; foreach (var personId in deletePersonIds) { var partyPerson = new PartyPerson { Party_PartyId = party.PartyId, Person_PersonId = personId }; businessTripContex.Entry(partyPerson).State = EntityState.Deleted; } foreach (var personId in addPersonIds) { var partyPerson = new PartyPerson { Party_PartyId = party.PartyId, Person_PersonId = personId }; businessTripContex.Entry(partyPerson).State = EntityState.Added; } businessTripContex.SaveChanges(); } }
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 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)); }