示例#1
0
        public Response <Div> Div([FromBody] DivDto divdto)
        {
            return(Extension.Try <Div>(() =>
            {
                string TrackingId = null;

                Div Restul = this.serviceCalculators.Div(divdto.Dividend, divdto.Divisor);

                //If a 'TrackingId’ was provided, the server should store this request’s details inside it’s
                //journal, indexed by the given Id.
                TrackingId = ValidateTrackingId();

                if (!string.IsNullOrEmpty(TrackingId))
                {
                    Operations operation = new Operations()
                    {
                        Id = TrackingId,
                        Operation = "Div",
                        Date = DateTime.UtcNow.ToString("s") + "Z",
                        Calculation = divdto.Dividend + "/" + divdto.Divisor + "=" + Restul.Quotient + "." + Restul.Remainder
                    };

                    this.serviceCalculators.SaveJournal(operation);
                }

                return Restul;
            }, _logger));
        }
示例#2
0
        public async Task <DivResponseDto> Division(DivDto div, string trackingId)
        {
            int remainder;
            var result   = Math.DivRem(div.Dividend, div.Divisor, out remainder);
            var response = new DivResponseDto {
                Quotient = result, Remainder = remainder
            };

            await _journal.AddJournalOperation(EnumOperationsType.Div, div, response, trackingId);

            return(response);
        }
示例#3
0
        static void Main(string[] args)
        {
            string     trackingId = "1143326479";
            List <int> Addends    = new List <int>();

            Addends.Add(3);
            Addends.Add(3);
            Addends.Add(2);
            SubDto subdto = new SubDto()
            {
                Minuend    = 5,
                Subtrahend = 3
            };

            List <int> Factors = new List <int>();

            Factors.Add(8);
            Factors.Add(3);
            Factors.Add(2);

            MultDto multdto = new MultDto()
            {
                Factors = Factors
            };
            DivDto divdto = new DivDto()
            {
                Dividend = 4,
                Divisor  = 2
            };
            SqrtDto sqrtdto = new SqrtDto()
            {
                Number = 6
            };
            QueryDto queryDto = new QueryDto()
            {
                Id = trackingId
            };

            Add(Addends, trackingId).Wait();
            Sub(subdto, trackingId).Wait();
            Mult(multdto, trackingId).Wait();
            Div(divdto, trackingId).Wait();
            Sqrt(sqrtdto, trackingId).Wait();
            Query(queryDto).Wait();

            Console.Read();
        }
示例#4
0
        static async Task Div(DivDto divdto, string trackingId)
        {
            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(url);
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                if (!string.IsNullOrEmpty(trackingId))
                {
                    client.DefaultRequestHeaders.Add("X-Evi-Tracking-Id", trackingId);
                }

                HttpResponseMessage responsePost = await client.PostAsJsonAsync("api/calculator/div", divdto);

                if (responsePost.IsSuccessStatusCode)
                {
                    // Get the URI of the created resource.
                    // Console.WriteLine(responsePost.Content.ReadAsStringAsync().Result);
                    Response <Div> div = JsonConvert.DeserializeObject <Response <Div> >(responsePost.Content.ReadAsStringAsync().Result);
                    Console.WriteLine(string.Format("Quotient: {0}", div.Data.Quotient));
                    Console.WriteLine(string.Format("Remainder: {0}", div.Data.Remainder));
                }
            }
        }
        public async Task <DivResponseDto> Div([FromHeader(Name = "X-Evi-TrackingId")] string trackingId, [FromBody] DivDto div)
        {
            _loggerManager.LogInfo("Call 'Div' post method on CalculatorController");

            if (div == null)
            {
                _loggerManager.LogError("BadRequestException on calls 'Div' post method on CalculatorController");
                throw new BadRequestException("Unable to process request: Div");
            }

            try
            {
                var result = await _calculator.Division(div, trackingId);

                return(result);
            }
            catch (System.Exception ex)
            {
                _loggerManager.LogError("InternalErrorException on calls 'Div' post method on CalculatorController", ex);
                throw new InternalErrorException("An unexpected error condition was triggered which made impossible to fulfill the request. Please try again later.");
            }
        }