public Response RequestObjection(ObjectionRequest objectionRequest) { try { var faultCourtServiceClients = GetFaultCourtService(objectionRequest.Court_ID); if (faultCourtServiceClients == null || faultCourtServiceClients.Count == 0) { return new Response { ErrorCodes = new List <int> { ErrorCode.CourtIDNotRegistered } } } ; else if (faultCourtServiceClients.Count == 1) { return(faultCourtServiceClients.First().RequestObjection(objectionRequest)); } else { List <Task <Response> > serviceTasks = faultCourtServiceClients.Select(service => service.RequestObjectionAsync(objectionRequest)).ToList(); while (serviceTasks.Count > 0) { Task <Response> serviceTask = GetFirstFinishedTask(serviceTasks); //Remove the task from the unfinished List serviceTasks.Remove(serviceTask); try { var response = serviceTask.Result; if (response.Result || !response.ErrorCodes.Contains(ErrorCode.NotFoundBussinessID)) { return(response); } } catch (OperationCanceledException) { } catch (Exception ex) { logger.LogException(ex); } } //if none of the services respond correctly then this id is wrong or correct service isn't registered return(new Response { ErrorCodes = new List <int> { ErrorCode.NotFoundBussinessID } }); } } catch (Exception ex) { logger.LogException(ex); return(Response.Failed); } }
public Response RequestObjection(ObjectionRequest objectionRequest) { throw new NotImplementedException(); }