public async Task AssignNewPlatoonCommander(Prosba request, bool accepted) { if (accepted) { var soldier = await _soldierRepo.Get() .Where(s => s.IdOsoby == request.IdZglaszajacego).SingleOrDefaultAsync(); var platoon = await _platoonRepo.Get() .Where(p => p.NrKompanii == request.NrKompanii && p.NrPlutonu == request.NrPlutonu) .SingleOrDefaultAsync(); soldier.NrPlutonu = request.NrPlutonu; platoon.IdDowodcy = soldier.IdOsoby; _soldierRepo.Update(soldier); await _soldierRepo.SaveAsync(); _platoonRepo.Update(platoon); await _platoonRepo.SaveAsync(); var user = (await _userManager.GetUsersInRoleAsync(UserRoleName)).Where(u => u.IdOsoby == request.IdZglaszajacego).SingleOrDefault(); try { await _roleService.AddToPCRole(user); await _firebaseService.SubscribeToPlatoonTopic(request.IdZglaszajacego, request.NrKompanii, (int)request.NrPlutonu, false); } catch (Exception) { } } _requestRepo.Delete(request); await _requestRepo.SaveAsync(); }
public async Task JoinCompannyGroup(int companyId, string requestingUser) { var user = await _userManager.FindByNameAsync(requestingUser); var request = new Prosba { NrKompanii = companyId, IdZglaszajacego = (int)user.IdOsoby, TypProsby = TypProsby.JC }; _requestRepo.Add(request); await _requestRepo.SaveAsync(); }
public async Task AcceptRequest(Prosba request, bool accepted) { if (accepted) { var soldier = await _soldierRepo.Get().Where(s => s.IdOsoby == request.IdZglaszajacego).SingleOrDefaultAsync(); if (request.TypProsby == TypProsby.PA) { if (soldier.NrPlutonu != request.NrPlutonu) { throw new Exception("Soldier is not a member of this platoon"); } soldier.Funkcyjny = true; _soldierRepo.Update(soldier); await _soldierRepo.SaveAsync(); var user = (await _userManager.GetUsersInRoleAsync(UserRoleName)).Where(u => u.IdOsoby == request.IdZglaszajacego).SingleOrDefault(); try { await _roleService.AddToAssRole(user); await _firebaseService.SubscribeToPlatoonTopic(soldier.IdOsoby, request.NrKompanii, (int)request.NrPlutonu, true); } catch (Exception) { } } else { soldier.NrPlutonu = request.NrPlutonu; _soldierRepo.Update(soldier); await _soldierRepo.SaveAsync(); try { await _firebaseService.SubscribeToPlatoonTopic(soldier.IdOsoby, request.NrKompanii, (int)request.NrPlutonu, false); } catch (Exception) { } } } _requestRepo.Delete(request); await _requestRepo.SaveAsync(); }
public async Task AcceptRequest(Prosba request, bool accepted) { if (accepted) { var soldier = await _soldierRepo.Get().Where(s => s.IdOsoby == request.IdZglaszajacego).SingleOrDefaultAsync(); soldier.NrKompanii = request.NrKompanii; _soldierRepo.Update(soldier); await _soldierRepo.SaveAsync(); try { await _firebaseService.SubscribeToCompanyTopic(soldier.IdOsoby, request.NrKompanii); } catch (Exception) { } } _requestRepo.Delete(request); await _requestRepo.SaveAsync(); }
public async Task JoinPlatoonGroup(int companyId, int platoonId, string requestingUser) { var user = await _userManager.FindByNameAsync(requestingUser); var soldier = await _soldierRepo.Get().AsNoTracking().Where(p => p.IdOsoby == user.IdOsoby).SingleOrDefaultAsync(); if (soldier.NrKompanii != companyId) { throw new Exception("Soldier is not a member of this company"); } var request = new Prosba { NrKompanii = companyId, NrPlutonu = platoonId, IdZglaszajacego = soldier.IdOsoby, TypProsby = TypProsby.JP }; _requestRepo.Add(request); await _requestRepo.SaveAsync(); }
/// <summary>Request a Platoon Commander Assistant Role</summary> public async Task ApplyForPCARole(int companyId, int platoonId, string requestingUser) { var user = await _userManager.FindByNameAsync(requestingUser); var requesting = await _soldierRepo.Get().AsNoTracking().Where(s => s.IdOsoby == user.IdOsoby).SingleOrDefaultAsync(); if (requesting.NrKompanii != companyId || requesting.NrPlutonu != platoonId) { throw new InvalidOperationException("User must be assigned to the company first and be a soldier of the platoon"); } var request = new Prosba { NrKompanii = companyId, NrPlutonu = platoonId, IdZglaszajacego = requesting.IdOsoby, TypProsby = TypProsby.PA }; _requestRepo.Add(request); await _requestRepo.SaveAsync(); }