コード例 #1
0
        public async Task <IActionResult> Update([FromBody] StatusUpdateModel model)
        {
            var user = await _userManager.GetUserAsync(HttpContext.User);

            _infoStore.StatusModels[user.Id] = model;
            return(Ok());
        }
コード例 #2
0
        private void PivotTowardPosition(StatusUpdateModel model)
        {
            var angle = CommonTools.CalculateAngle(model.ShipStatus.XPos, _position.X, model.ShipStatus.YPos, _position.Y);

            _angle = angle;
            _actions.Accelerate(_angle, 1);
        }
コード例 #3
0
        public Optional <IActionEngine> ReceiveStatus(StatusUpdateModel model)
        {
            if (_start.AddSeconds(3) > DateTime.Now)
            {
                return(Optional <IActionEngine> .FromNull());
            }

            var notOwnedMines = model.GoldMines.Where(s => s.Owner != _owner);

            if (CommonTools.CalHypo(model.ShipStatus.XPos, _position.X, model.ShipStatus.YPos, _position.Y) < 300)
            {
                var randomEng = new RandomExplorerEngine(_actions, _scanner, _owner);
                return(Optional <IActionEngine> .From(randomEng));
            }

            if (notOwnedMines.Count() > 0)
            {
                return(Optional.From <IActionEngine>(new ApproacherEngine(notOwnedMines.First(), this, _actions, _owner)));
            }
            else
            {
                PivotTowardPosition(model);
                MakeScans();
                return(Optional <IActionEngine> .FromNull());
            }
        }
コード例 #4
0
        public void Run(StatusUpdateModel model)
        {
            _start = DateTime.Now;
            var angle = CommonTools.CalculateAngle(model.ShipStatus.XPos, _position.X, model.ShipStatus.YPos, _position.Y);

            _angle = angle;
            PivotTowardPosition(model);
        }
コード例 #5
0
        public string UpdateStatus([FromBody] StatusUpdateModel statusUpdateModel)
        {
            var userName  = User.Identity.Name;
            var userId    = _UserService.GetUserIdByName(userName);
            var isUpdated = _contactService.UpdateStatus(statusUpdateModel.Id, statusUpdateModel.Status, userId);

            return(isUpdated ? "Status updated successfully" : "Unable to update status");
        }
コード例 #6
0
 private void SendLongRangeApproacher(StatusUpdateModel model)
 {
     if (CommonTools.GetRandom(100) < 10 && _currentEngine is RandomExplorerEngine)
     {
         var location        = Data.Mines.ToList()[CommonTools.GetRandom(Data.Mines.Count)];
         var longRangeEngine = new LongRangeApproacherEngine(location.Value, _currentEngine, _actions, _user);
         _currentEngine = longRangeEngine;
         longRangeEngine.Run(model);
     }
 }
コード例 #7
0
        public IActionResult StatusUpdate([FromQuery] int projectId)
        {
            List <StatusUpdateOption> statusUpdateOptions = statusUpdateService.GetStatusUpdates(projectId);
            StatusUpdateModel         transactionModel    = new StatusUpdateModel()
            {
                StatusUpdateOptions = statusUpdateOptions
            };

            return(View(transactionModel));
        }
コード例 #8
0
        public async Task ReportStatus(StatusUpdateModel model)
        {
            await EnsureAuthentication();

            var payload  = JsonSerializer.Serialize(model);
            var content  = new StringContent(payload, Encoding.UTF8, Json);
            var response = await _client.PostAsync("/agent/status/update", content);

            response.EnsureSuccessStatusCode();
        }
コード例 #9
0
        private void CheckIfOtherMines(StatusUpdateModel model)
        {
            if (_next != null)
            {
                return;
            }
            var targets = model.GoldMines.Where(s => s.Owner != _owner && s != _position);

            if (targets.Count() > 0)
            {
                _next = targets.First();
            }
        }
コード例 #10
0
 private void RollAgain(StatusUpdateModel model)
 {
     if (_lastDecisionTime.AddSeconds(15) < DateTime.Now)
     {
         MakeDecision();
     }
     else
     {
         var lastRollRad = CommonTools.RadToDeg(_lastRoll);
         lastRollRad += CommonTools.GetRandom(21) - 10;
         _lastRoll    = CommonTools.DegToRad(lastRollRad);
         _actions.Accelerate(_lastRoll, 1);
     }
 }
コード例 #11
0
        async System.Threading.Tasks.Task RejectCommand(StatusUpdateModel s)
        {
            result = await APIServices.UpdateStatus(s, Constants.updateUserStatusEndpoint);

            if (result)
            {
                await Application.Current.MainPage.DisplayAlert("Success", "User Rejected", "ok");

                await Application.Current.MainPage.Navigation.PushAsync(new UsersView(2, "Pending User"));
            }
            else
            {
                await Application.Current.MainPage.DisplayAlert("Error", "Please try again", "ok");
            }
        }
コード例 #12
0
        public Optional <IActionEngine> ReceiveStatus(StatusUpdateModel model)
        {
            _lastPosition = model.ShipStatus;
            if (_attemptStart.AddSeconds(30) < DateTime.Now)
            {
                return(Optional.From(_prevEngine));
            }

            var location = model.GoldMines.Where(s => s.X == _position.X && s.Y == _position.Y).FirstOrDefault();

            if (_position.Owner == _owner)
            {
                return(Optional.From(_prevEngine));
            }

            if (_lastPosition.XVelocity < 0.01 && _lastPosition.YVelocity < 0.01 && _status == ApproachStatus.BREAKING)
            {
                _status = ApproachStatus.APPROACHING;
                var angle    = CalculateAngle();
                var distance = CalculateDistance();
                _distanceAwayFromBreak = distance;
                _client.Accelerate(angle, 1);
            }
            else if (_status == ApproachStatus.APPROACHING)
            {
                var currDistnace = CalculateDistance();
                if (currDistnace < 100)
                {
                    _client.Break();
                    _status = ApproachStatus.HOMING;
                }
            }
            else if (_status == ApproachStatus.HOMING)
            {
                if (location.Owner == _owner)
                {
                    //we caught it, time to move on
                    return(Optional.From(_prevEngine));
                }
            }
            else
            {
                //still break
                _client.Break();
            }

            return(Optional <IActionEngine> .FromNull());
        }
コード例 #13
0
        public StatusUpdateModel Scan(double x, double y)
        {
            if (!CanScan())
            {
                return(StatusUpdateModel.MakeUnAvailableModel());
            }
            var model = _actions.Scan(x, y);

            if (!model.Available)
            {
                return(StatusUpdateModel.MakeUnAvailableModel());
            }
            Data.LastScan        = DateTime.Now;
            Data.LastScanResults = model;
            AddUniqueMines(model.GoldMines);
            return(model);
        }
コード例 #14
0
        public StatusUpdateModel GetStatus()
        {
            var request  = CreateRequestFromAction("STATUS");
            var response = ExecuteRequestAndGetResponse(request);

            if (response.Contains("limit"))
            {
                return(StatusUpdateModel.MakeUnAvailableModel());
            }
            try {
                var parser = new StatusParser(response);
                var model  = parser.GetModel();
                return(model);
            } catch (Exception e) {
                return(StatusUpdateModel.MakeUnAvailableModel());
            }
        }
コード例 #15
0
        public Optional <IActionEngine> ReceiveStatus(StatusUpdateModel model)
        {
            if (_start.AddSeconds(3) > DateTime.Now)
            {
                return(Optional <IActionEngine> .FromNull());
            }
            var notOwnedMines = model.GoldMines.Where(s => s.Owner != _owner);

            if (notOwnedMines.Count() > 0)
            {
                return(Optional.From <IActionEngine>(new ApproacherEngine(notOwnedMines.First(), this, _actions, _owner)));
            }
            else
            {
                RollAgain(model);
                MakeScans();
                return(Optional <IActionEngine> .FromNull());
            }
        }
コード例 #16
0
        public async Task <JobResult> RunJob()
        {
            var rng    = new Random();
            var status = new StatusUpdateModel
            {
                Hostname   = Environment.MachineName,
                IpAddress  = GetLocalIpAddress(),
                CpuUsage   = rng.Next(101),
                MaximumRam = 8192,
                CurrentRam = rng.Next(8193)
            };
            await _server.ReportStatus(status);

            _logger.LogInformation($"Status update ran at: {DateTime.Now:g}");

            RunNext = DateTime.Now.AddSeconds(5);

            return(JobResult.Success);
        }
コード例 #17
0
        public StatusUpdateModel Scan(double x, double y)
        {
            var request  = CreateRequestFromAction($"SCAN {x} {y}");
            var response = ExecuteRequestAndGetResponse(request);

            if (response.Contains("ERROR"))
            {
                return(StatusUpdateModel.MakeUnAvailableModel());
            }
            else
            {
                try {
                    var parser = new StatusParser(response);
                    var model  = parser.GetModel();
                    return(model);
                } catch (Exception ex) {
                    return(StatusUpdateModel.MakeUnAvailableModel());
                }
            }
        }
コード例 #18
0
        public static async Task <bool> UpdateStatus(
            StatusUpdateModel s, string uri)
        {
            var client = new HttpClient();

            var responseModel = new loginModel();

            /*var model = new StatusUpdateModel
             * {
             *  Id = id,
             *  Status = status
             *
             * };*/

            var json = JsonConvert.SerializeObject(s);

            HttpContent httpContent = new StringContent(json);

            httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");

            var response = await client.PostAsync(
                uri, httpContent);

            if (response.IsSuccessStatusCode)
            {
                /*string content = await response.Content.ReadAsStringAsync();
                 * responseModel = JsonConvert.DeserializeObject<loginModel>(content);
                 * Application.Current.Properties["id"] = responseModel.Id;
                 * Application.Current.Properties["name"] = responseModel.Email;
                 * Application.Current.Properties["password"] = responseModel.Password;*/

                /* Console.WriteLine(Application.Current.Properties["id"]);*/

                return(true);
            }

            return(false);
        }
コード例 #19
0
        private void SendDirEngine(StatusUpdateModel model)
        {
            if (!model.Available)
            {
                return;
            }

            if (_currentEngine is RandomExplorerEngine && Data.Mines.Count > 8 && CommonTools.GetRandom(100) < Data.Mines.Count * 3)
            {
                var closestDistance = Data.Mines.Values.Where(s => s.Owner != _user)
                                      .Select(s => CommonTools.CalHypo(model.ShipStatus.XPos, s.X, model.ShipStatus.YPos, s.Y)).Distinct().OrderBy(s => s).Where(s => s < 2000).ToList();

                if (closestDistance.Count == 0)
                {
                    if (CommonTools.GetRandom(100) < 30)
                    {
                        closestDistance = Data.Mines.Values.Where(s => s.Owner != _user)
                                          .Select(s => CommonTools.CalHypo(model.ShipStatus.XPos, s.X, model.ShipStatus.YPos, s.Y)).Distinct().OrderBy(s => s).Where(s => s < 4000).ToList();
                    }
                    else
                    {
                        return;
                    }
                }

                var closestList = Data.Mines.Where(s => closestDistance.Contains(CommonTools.CalHypo(model.ShipStatus.XPos, s.Value.X, model.ShipStatus.YPos, s.Value.Y))).Distinct().ToList();

                var closest  = closestList[CommonTools.GetRandom(closestList.Count)];
                var distance = CommonTools.CalHypo(model.ShipStatus.XPos, closest.Value.X, model.ShipStatus.YPos, closest.Value.Y);

                var dirEngine = new InfluencedDirEngine(_actions, this, _user, closest.Value);
                _currentEngine       = dirEngine;
                Data.TargetDirection = closest.Value;
                dirEngine.Run(model);
            }
        }
コード例 #20
0
 private void SetStatus(StatusUpdateModel status)
 {
     Data.ShipStatus = status.ShipStatus;
 }
コード例 #21
0
 public void Run(StatusUpdateModel model)
 {
     MakeDecision();
     _start = DateTime.Now;
 }
コード例 #22
0
 public void Run(StatusUpdateModel model)
 {
     _client.Break();
 }
コード例 #23
0
        public Optional <IActionEngine> ReceiveStatus(StatusUpdateModel model)
        {
            CheckIfOtherMines(model);

            _lastPosition = model.ShipStatus;
            if (_attemptStart.AddSeconds(10) < DateTime.Now)
            {
                return(Optional.From(_prevEngine));
            }

            var location = model.GoldMines.Where(s => s.X == _position.X && s.Y == _position.Y).FirstOrDefault();

            if (location != null && location.Owner == _owner)
            {
                return(Optional.From(_prevEngine));
            }

            if (Math.Abs(_lastPosition.XVelocity) < 0.05 && Math.Abs(_lastPosition.YVelocity) < 0.05 && _status == ApproachStatus.BREAKING)
            {
                _status = ApproachStatus.APPROACHING;
                var angle = CalculateAngle();
                _angle = angle;
                var distance = CalculateDistance();
                _distanceAwayFromBreak = distance;
                _client.Accelerate(angle, 0.7);
            }
            else if (_status == ApproachStatus.APPROACHING)
            {
                _client.Accelerate(_angle, 0.7);
                var currDistnace = CalculateDistance();
                if (currDistnace < 0.35 * _distanceAwayFromBreak)
                {
                    _client.Break();
                    _status = ApproachStatus.HOMING;
                }
            }
            else if (_status == ApproachStatus.HOMING)
            {
                if (location == null)
                {
                    _client.Break();
                    _status = ApproachStatus.APPROACHING;
                }
                if (location != null && location.Owner == _owner)
                {
                    //we caught it, time to move on
                    if (_next != null)
                    {
                        var newApproacher = new ApproacherEngine(_next, _prevEngine, _client, _owner);
                        return(Optional <IActionEngine> .From(newApproacher));
                    }
                    else
                    {
                        return(Optional.From(_prevEngine));
                    }
                }
                else
                {
                    _status = ApproachStatus.APPROACHING;
                    var angle    = CalculateAngle();
                    var distance = CalculateDistance();
                    _distanceAwayFromBreak = distance;
                    _client.Accelerate(angle, 0.7);
                }
            }
            else
            {
                //still break
                _client.Break();
            }

            return(Optional <IActionEngine> .FromNull());
        }
コード例 #24
0
        public IActionResult UpdateStatus(IFormCollection form, [FromServices] IEmailSender emailSender, [FromServices] IConfiguration configuration)
        {
            StatusUpdateModel details = JsonConvert.DeserializeObject <StatusUpdateModel>(form["aboutInfo"]);

            try
            {
                var transaction = transactionService.GetTransaction(details.ID);
                var link        = transactionLinkService.GetTransactionLinks().Where(s => s.TransactionID == transaction.Id).FirstOrDefault();
                transaction.Status = details.Status.Value;
                link.Status        = details.Status.Value;
                transactionService.UpdateTransaction(transaction);
                transactionLinkService.UpdateTransactionLink(link);
                if (transaction.Status == 3)
                {
                    var    linkas = Url.Action("TransactionView", "MyTransaction", new { code = link.LinkCode }, Request.Scheme, Request.Host.ToString());
                    string coded  = link.LinkCode.ToString();


                    var title = "Pay Guardex: Product has been shipped.";

                    var mailbody = "<html>" +
                                   "<head>" +
                                   "<link rel=\"stylesheet\" href=\"https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css\" integrity=\"sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk\" crossorigin=\"anonymous\">" +
                                   "</head>" +
                                   "<body>" +
                                   "<div class=\"container\">" +
                                   "<div class=\"row\">" +
                                   "<div class=\"col-md-12\" style=\"padding:30px;background-color:#d8e9ff\">" +
                                   "<h3 style=\"color:forestgreen\">Product has been Shipped</h3>" +
                                   "<div>" +
                                   "<p>Seller shipped the product. When buyer recieved the product will update the status using the link </p>" +
                                   "</div>" +
                                   "<div>" +
                                   "<p>Please visit the link or click the button to view the transaction.</p>" +
                                   "<p>" + linkas + "</p>" +
                                   "</div>" +
                                   "<div style=\"text-align:center\">" +
                                   "<a href=" + linkas + " class=\"btn btn-success\"> Manage Transaction </a>" +
                                   "</div>" +
                                   "</div>" +
                                   "</div>" +
                                   "</div>" +
                                   "</ body >" +
                                   "</html>";

                    emailSender.Post(
                        subject: title,
                        body: mailbody,
                        recipients: transaction.BuyerEmail,
                        sender: configuration["AdminContact"]);
                    emailSender.Post(
                        subject: title,
                        body: mailbody,
                        recipients: transaction.SellerEmail,
                        sender: configuration["AdminContact"]);
                }
                return(Json(new { success = true }));
            }
            catch (Exception ex)
            {
                return(Json(new { success = false }));
            }
        }