Пример #1
0
        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();
 }