示例#1
0
        public async Task <ActionResult <request> > PostrequestAdd([FromBody] RequestAdd ra, [FromHeader] string api_token)
        {
            AuthController newAuth      = new AuthController(_context);
            var            ActionResult = await newAuth.getId(api_token);

            var OkObjectResult = ActionResult as OkObjectResult;

            int userId = (int)OkObjectResult.Value;

            if (_context.client.Any(x => x.id_client == userId))
            {
                request new_request = new request {
                    income            = ra.income,
                    place_job         = ra.place_job,
                    client_id         = userId,
                    status_request_id = 3,
                    type_acc_id       = ra.type_account_id
                };

                _context.request.Add(new_request);
                await _context.SaveChangesAsync();

                return(CreatedAtAction("Getrequest", new { id = new_request.id_request }, new_request));
            }
            else
            {
                return(NotFound());
            }
        }
示例#2
0
        internal string Sum(List <int> listNumbers)
        {
            var requestAdd = new RequestAdd {
                Addends = listNumbers.ToArray()
            };
            var result = _client.Post <ResponseAdd>("/add", requestAdd);

            return((string)result.RawData);
        }
示例#3
0
        public ResponseAdd RequestAdd(int timeOutMilliSec, params int[] param)
        {
            RequestAdd requestAdd = new RequestAdd {
                UUID = Guid.NewGuid().ToString()
            };

            foreach (int p in param)
            {
                requestAdd.Param.Add(p);
            }

            // set a timeout on this call to server!
            // if we do not hv this timeout, calling this RequestAdd method will forever waiting if server never response!
            TaskCompletionSource <ResponseAdd> tcs = new TaskCompletionSource <ResponseAdd>();

            //CancellationTokenSource ct = new CancellationTokenSource(timeOutMilliSec);
            // package TaskParallelLibrary CancellationTokenSource only hv empty constructor!!
            CancellationTokenSource ct = new CancellationTokenSource();

            ResponseAddHandler rah = ((rpAdd) =>
            {
                // only want the response UUID which is same as what we send
                if (rpAdd.UUID == requestAdd.UUID)
                {
                    tcs.TrySetResult(rpAdd);
                }
            });

            // when timeout occur, set Exception to TaskCompletionSource
            // also remove the callback from eventhandler
            ct.Token.Register(() =>
            {
                OnResponseAdd -= rah;
                tcs.TrySetException(new TimeoutException("TimeOut " + timeOutMilliSec));
            }, useSynchronizationContext: false);


            // use Rackspace.Threading.CancellationTokenSourceExtensions CancelAfter
            ct.CancelAfter(TimeSpan.FromMilliseconds(timeOutMilliSec));

            OnResponseAdd += rah;   //hook to the eventHandler
            //string sendCmd = "RequestAdd " + Newtonsoft.Json.JsonConvert.SerializeObject(requestAdd) + "\r\n";
            string sendCmd = Cmd.TcsCommand.RequestAdd.ToString() + " " + Newtonsoft.Json.JsonConvert.SerializeObject(requestAdd) + "\r\n";

            base.Send(Encoding.UTF8.GetBytes(sendCmd));
            tcs.Task.Wait();
            ResponseAdd responseAdd = tcs.Task.Result;

            OnResponseAdd -= rah;   //after received our response, unhook it. we only expecting 1 response.

            return(responseAdd);
        }
        public async Task Task_Sum_Numbers()
        {
            int[]      numbers    = { 1, 4, 6 };
            RequestAdd requestAdd = new RequestAdd()
            {
                Addends = numbers
            };

            string      strPayload = JsonConvert.SerializeObject(requestAdd);
            HttpContent content    = new StringContent(strPayload, Encoding.UTF8, "application/json");
            var         response   = await _client.PostAsync("api/v1/calculator/add", content);

            response.EnsureSuccessStatusCode();
            var responseString = await response.Content.ReadAsStringAsync();

            Assert.Equal("{\"sum\":11}", responseString);
        }
示例#5
0
 private void btn_adddRequest_Click(object sender, RoutedEventArgs e)
 {
     try
     {
         RequestAdd requestAdd = new RequestAdd();
         requestAdd.Owner   = mainWindow;
         mainWindow.Opacity = 0.5;
         requestAdd.WindowStartupLocation = WindowStartupLocation.CenterOwner;
         requestAdd.ShowDialog();
     }
     catch (Exception ex)
     {
         DB.AddLog(new Log {
             error_page = "uctodolist", error_text = ex.Message, log_user = User.id
         });
     }
 }
示例#6
0
        /// <summary>
        /// Send command RequestAdd to server
        /// Receive a Data.ResponseAdd object
        /// - async method
        /// - will throw Exception "TimeOut"
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public async Task <ResponseAdd> RequestAddAsync(params int[] param)
        {
            RequestAdd requestAdd = new RequestAdd {
                UUID = Guid.NewGuid().ToString()
            };

            foreach (int p in param)
            {
                requestAdd.Param.Add(p);
            }

            // set a timeout on this call to server!
            TaskCompletionSource <ResponseAdd> tcs = new TaskCompletionSource <ResponseAdd>();
            const int timeOuts         = 10000; //miliseconds
            CancellationTokenSource ct = new CancellationTokenSource(timeOuts);

            ResponseAddHandler rah = ((rpAdd) =>
            {
                // only want the response UUID which is same as what we send
                if (rpAdd.UUID == requestAdd.UUID)
                {
                    tcs.TrySetResult(rpAdd);
                }
            });

            // when timeout occur, set Exception to TaskCompletionSource
            // also remove the callback from eventhandler
            ct.Token.Register(() =>
            {
                OnResponseAdd -= rah;
                tcs.TrySetException(new TimeoutException("TimeOut " + timeOuts));
            }, useSynchronizationContext: false);

            OnResponseAdd += rah;   //hook to the eventHandler
            //string sendCmd = "RequestAdd " + Newtonsoft.Json.JsonConvert.SerializeObject(requestAdd) + "\r\n";
            string sendCmd = Cmd.TcsCommand.RequestAdd.ToString() + " " + Newtonsoft.Json.JsonConvert.SerializeObject(requestAdd) + "\r\n";

            base.Send(Encoding.UTF8.GetBytes(sendCmd));

            ResponseAdd responseAdd = await tcs.Task;

            OnResponseAdd -= rah;   //after received our response, unhook it. we only expecting 1 response.

            return(responseAdd);
        }
示例#7
0
        public async Task <IActionResult> Add([FromBody] RequestAdd requestAdd, CancellationToken ct = default(CancellationToken))
        {
            try {
                bool save     = Request.Headers.ContainsKey("X-Evl-Tracking-Id");
                var  id       = save ? Request.Headers["X-Evl-Tracking-Id"].ToString() : null;
                var  response = await _calculatorSupervisor.AddAsync(requestAdd, save, id, ct);

                return(Ok(response));
            } catch (Exception ex) {
                var response = new ResponseCanonic()
                {
                    ErrorCode    = Enum.GetName(typeof(HttpStatusCode), HttpStatusCode.InternalServerError),
                    ErrorStatus  = (int)HttpStatusCode.InternalServerError,
                    ErrorMessage = ex.Message
                };
                return(StatusCode((int)HttpStatusCode.InternalServerError, response));
            }
        }
        public async Task <ResponseAdd> AddAsync(RequestAdd requestAdd, bool save, string id, CancellationToken ct = default(CancellationToken))
        {
            var resAdd = requestAdd.Addends.ToList().Sum();

            if (save)
            {
                await _operationRepository.AddAsync(new Model.Entities.Operation()
                {
                    IdHeader      = id,
                    OperationType = "Sum",
                    Date          = DateTime.Now.ToString(),
                    Calculation   = $"{string.Join(" + ", requestAdd.Addends)} = {resAdd}"
                });
            }
            return(new ResponseAdd()
            {
                Sum = resAdd
            });
        }
示例#9
0
 public void RaiseRequestAdd(IWidgetPlugin obj)
 {
     RequestAdd?.Invoke(obj);
 }
 public void RaiseRequestAdd(IWidgetPlugin plugin)
 {
     RequestAdd?.Invoke(plugin);
 }