public async Task <IActionResult> AssignOrRemoveCandidate([FromBody] PartyCandidateRequest model) { var result = await _partiesService.AssignOrRemoveCandidateFromPartyAsync(model); if (result.IsSuccess) { return(Ok(result)); } return(BadRequest(result)); }
public async Task <OperationResponse <CandidateDetail> > AssignOrRemoveCandidateFromPartyAsync(PartyCandidateRequest request) { var candidate = await _unitOfWork.Candidates.GetByIdAsync(request.CandidateId); if (candidate == null) { return(new OperationResponse <CandidateDetail> { IsSuccess = false, Message = "Candidate cannot be found" }); } var party = await _unitOfWork.Parties.GetByIdAsync(request.PartyId); if (party == null) { return(new OperationResponse <CandidateDetail> { IsSuccess = false, Message = "Party cannot be found" }); } // var partyCandidates = _unitOfWork.Parties.GetAllCandidatesInParty(request.PartyId); var partyCandidate = party.PartyCandidates.SingleOrDefault(pc => pc.CandidateId == request.CandidateId); string message = string.Empty; if (partyCandidate != null) { _unitOfWork.Parties.RemoveCandidateFromParty(partyCandidate); message = "Candidate has been removed from party"; } else { await _unitOfWork.Parties.AddCandidateToPartyAsync(new PartyCandidate { Party = party, Candidate = candidate, }); message = "Candidate has been added to party"; } await _unitOfWork.CommitChangesAsync(_identity.UserId); return(new OperationResponse <CandidateDetail> { IsSuccess = true, Message = message }); }