コード例 #1
0
        void BRaccourci_Click(object sender, RoutedEventArgs e)
        {
            int i = 0;

            if (BRaccourci1.Equals(sender))
            {
                i = 0;
            }
            if (BRaccourci2.Equals(sender))
            {
                i = 1;
            }
            if (BRaccourci3.Equals(sender))
            {
                i = 2;
            }
            if (BRaccourci4.Equals(sender))
            {
                i = 3;
            }

            InterventionDto interv = new InterventionDto
            {
                IDUtilisateur = user.ID,
                IDContact     = repertoire[i].IDContact,
                DateHeure     = DateTime.Now,
                Data          = "Appel rapide",
                UrgenceLevel  = 2,
                GPSLocation   = "random"
            };

            WCFProxy.DoInterventionAsync(interv);
            idCalledPerson.Add(repertoire[i].IDContact);
        }
コード例 #2
0
        private void BHelp_Click(object sender, RoutedEventArgs e)
        {
            // Not Working on emulator

            /*Geolocator geolocator = new Geolocator();
             * geolocator.DesiredAccuracyInMeters = 50;
             *
             * try
             * {
             *  Geoposition geoposition = await geolocator.GetGeopositionAsync(
             *      maximumAge: TimeSpan.FromMinutes(5),
             *      timeout: TimeSpan.FromSeconds(10)
             *      );
             *
             *  string position = "[" + geoposition.Coordinate.Latitude.ToString("0.00") + ", "+geoposition.Coordinate.Longitude.ToString("0.00") + "]";
             * }
             * catch (Exception ex)
             * {
             *  MessageBox.Show(ex.Message, "Erreur", MessageBoxButton.OK);
             * }*/

            InterventionDto interv = new InterventionDto
            {
                IDUtilisateur = user.ID,
                IDContact     = smartVigilance.IDContact,
                DateHeure     = DateTime.Now,
                Data          = "HELP",
                UrgenceLevel  = 3,
                GPSLocation   = "random"
            };

            WCFProxy.DoInterventionAsync(interv);
            idCalledPerson.Add(smartVigilance.IDContact);
        }
コード例 #3
0
        public async void AddIntervention(InterventionDto interventionDto)
        {
            var newIntervention = _mapper.Map <Intervention>(interventionDto);

            _interventionService.Add(newIntervention);
            await _interventionHub.Clients.All.SendAsync("interventionUpdated", newIntervention.Id);
        }
コード例 #4
0
        private static async Task <string> AddIntervention(
            InterventionDto intervention,
            CloudTable interventionsTable,
            Address convertedGeoAddress
            )
        {
            int nextId = await InterventionCounter.GetNextId(interventionsTable);

            InterventionEntity interventionEntity = new InterventionEntity()
            {
                PartitionKey     = GeoHash.Encode(convertedGeoAddress.Latitude, convertedGeoAddress.Lognitude, Config.GeoHashPrecision),
                RowKey           = nextId.ToString(),
                Email            = intervention.Email,
                City             = intervention.City,
                Street           = intervention.Street,
                StreetNumber     = intervention.StreetNumber,
                CreationDate     = DateTime.UtcNow,
                ModificationDate = DateTime.UtcNow,
                Description      = intervention.Description,
                FullName         = intervention.FullName,
                PhoneNumber      = intervention.PhoneNumber,
                Status           = (int)intervention.Status,
                GeoLat           = convertedGeoAddress.Latitude,
                GeoLng           = convertedGeoAddress.Lognitude,
            };

            TableOperation insertNewIntervention = TableOperation.Insert(interventionEntity);
            await interventionsTable.ExecuteAsync(insertNewIntervention);

            return(interventionEntity.RowKey);
        }
コード例 #5
0
        public async Task <ActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = "interventions")]
            InterventionDto intervention,
            [Table(Config.InterventionsTableName, Connection = Config.StorageConnectionName)] CloudTable interventionsTable,
            ILogger log)
        {
            // Validate Captcha
            if (intervention.Captcha != null)
            {
                try
                {
                    await _captchaService.ValidateCaptcha(intervention.Captcha);
                }
                catch (BaseException e)
                {
                    log.Log(e.LogLevel, e, e.Message);
                    return(new BadRequestObjectResult(e.Message));
                }
            }

            // Validate InterventionDTO
            var results = new List <ValidationResult>();

            if (!Validator.TryValidateObject(intervention, new ValidationContext(intervention, null, null), results))
            {
                var errorList = new List <string>();
                foreach (var error in results)
                {
                    errorList.Add(error.ErrorMessage);
                }
                string json = JsonConvert.SerializeObject(errorList);
                return(new BadRequestObjectResult(json));
            }

            // Convert GoogleMaps Address
            Address convertedGeoAddress;

            try
            {
                convertedGeoAddress = await _addressConverter.ConvertToGeoAddress(intervention.City, intervention.Street, intervention.StreetNumber);
            }
            catch (BaseException e)
            {
                log.Log(e.LogLevel, e, e.Message);
                return(new BadRequestObjectResult(e.Message));
            }
            catch (Exception e)
            {
                log.LogError(e, "Error podczas konwertowania adresu");
                return(new StatusCodeResult(StatusCodes.Status500InternalServerError));
            }

            string interventionId = await AddIntervention(intervention, interventionsTable, convertedGeoAddress);

            return(new JsonResult(new { id = interventionId }));
        }
コード例 #6
0
 public WindowIntervention(InterventionDto input)
 {
     InitializeComponent();
     i                = input;
     TBData.Text      = input.Data;
     TBGPS.Text       = input.GPSLocation;
     TBIDContact.Text = input.IDContact.ToString();
     TBIDUser.Text    = input.IDUtilisateur.ToString();
     TBUrgence.Text   = input.UrgenceLevel.ToString();
     TBDate.Text      = input.DateHeure.ToString();
 }
コード例 #7
0
        public async Task <ActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = "interventions")]
            [RequestBodyType(typeof(InterventionDto), "InterventionDto")] InterventionDto intervention,
            [Table(Config.InterventionsTableName, Connection = Config.StorageConnectionName)] IAsyncCollector <InterventionEntity> interventions,
            ILogger log)
        {
            var results = new List <ValidationResult>();

            if (!Validator.TryValidateObject(intervention, new ValidationContext(intervention, null, null), results))
            {
                var errorList = new List <string>();
                foreach (var error in results)
                {
                    errorList.Add(error.ErrorMessage);
                }
                string json = JsonConvert.SerializeObject(errorList);
                return(new BadRequestObjectResult(json));
            }
            Address convertedGeoAddress = new Address();

            try
            {
                // retry should be added
                convertedGeoAddress = await _addressConverter.ConvertToGeoAddress(intervention.Address);
            }
            catch (Exception e)
            {
                log.LogError(e, "error");
                return(new StatusCodeResult(StatusCodes.Status500InternalServerError));
            }
            InterventionEntity interventionEntity = new InterventionEntity()
            {
                Email            = intervention.Email,
                City             = intervention.City,
                Street           = intervention.Street,
                StreetNumber     = intervention.StreetNumber,
                CreationDate     = DateTime.UtcNow,
                ModificationDate = DateTime.UtcNow,
                Description      = intervention.Description,
                FullName         = intervention.FullName,
                PhoneNumber      = intervention.PhoneNumber,
                Status           = (int)intervention.Status,
                GeoLat           = convertedGeoAddress.Latitude,
                GeoLng           = convertedGeoAddress.Lognitude,
                PartitionKey     = GeoHash.Encode(convertedGeoAddress.Latitude, convertedGeoAddress.Lognitude, Config.GeoHashPrecision)
            };
            await interventions.AddAsync(interventionEntity);

            await interventions.FlushAsync();

            return(new JsonResult(new { id = interventionEntity.RowKey }));
        }
コード例 #8
0
        private void BOK_Click(object sender, RoutedEventArgs e)
        {
            for (int i = 1; i < repertoire.Count; i++) // slot 0 = smartvigi
            {
                InterventionDto interv = new InterventionDto
                {
                    IDUtilisateur = user.ID,
                    IDContact     = repertoire[i].IDContact,
                    DateHeure     = DateTime.Now,
                    Data          = "OK sms",
                    UrgenceLevel  = 1,
                    GPSLocation   = "random"
                };

                WCFProxy.DoInterventionAsync(interv);
                idCalledPerson.Add(repertoire[i].IDContact);
            }
        }
コード例 #9
0
 public WindowIntervention()
 {
     InitializeComponent();
     i          = new InterventionDto();
     _validated = false;
 }
コード例 #10
0
        public async Task <IActionResult> RunWithGeoHash(
            [HttpTrigger(AuthorizationLevel.Function, "put", Route = "interventions/{latitude}/{longitude}/{interventionId}")]
            [RequestBodyType(typeof(InterventionDto), "InterventionDto")] InterventionDto editedIntervention,
            [Table(Config.InterventionsTableName, Connection = Config.StorageConnectionName)] CloudTable interventionsTable,
            string latitude, string longitude, string interventionId, ILogger log)
        {
            var geoHash     = GeoHasher.GetGeoHash(latitude, longitude);
            var finalFilter = InterventionFilterBuilder.GetInterventionGeoHashFilter(geoHash, interventionId);

            var queryResult = await interventionsTable.ExecuteQuerySegmentedAsync(new TableQuery <InterventionEntity>().Where(
                                                                                      finalFilter).Take(1), null);

            var interventionToEdit = queryResult.Results.FirstOrDefault();

            if (interventionToEdit == null)
            {
                return(new StatusCodeResult(StatusCodes.Status404NotFound));
            }

            if (AddressChanged(interventionToEdit, editedIntervention))
            {
                Address convertedGeoAddress = new Address();
                try
                {
                    convertedGeoAddress = await _addressConverter.ConvertToGeoAddress(editedIntervention.Address);
                }
                catch (Exception e)
                {
                    log.LogError(e, "error");
                    return(new StatusCodeResult(StatusCodes.Status500InternalServerError));
                }

                InterventionEntity adddedInterventionEntity = new InterventionEntity()
                {
                    Email            = editedIntervention.Email,
                    CreationDate     = interventionToEdit.CreationDate,
                    ModificationDate = DateTime.UtcNow,
                    Description      = editedIntervention.Description,
                    FullName         = editedIntervention.FullName,
                    PhoneNumber      = editedIntervention.PhoneNumber,
                    Status           = (int)editedIntervention.Status,
                    City             = editedIntervention.City,
                    Street           = editedIntervention.Street,
                    StreetNumber     = editedIntervention.StreetNumber,
                    GeoLat           = convertedGeoAddress.Latitude,
                    GeoLng           = convertedGeoAddress.Lognitude,
                    PartitionKey     = GeoHash.Encode(convertedGeoAddress.Latitude, convertedGeoAddress.Lognitude, Config.GeoHashPrecision)
                };

                TableOperation deleteOldIntervention = TableOperation.Delete(interventionToEdit);
                TableOperation insertNewIntervention = TableOperation.InsertOrReplace(adddedInterventionEntity);

                TableBatchOperation batch = new TableBatchOperation {
                    deleteOldIntervention, insertNewIntervention
                };
                await interventionsTable.ExecuteBatchAsync(batch);

                var addedItemResponse = _mapper.Map <InterventionItemResponse>(adddedInterventionEntity);
                return(new JsonResult(addedItemResponse));
            }

            interventionToEdit.Email            = editedIntervention.Email;
            interventionToEdit.ModificationDate = DateTime.UtcNow;
            interventionToEdit.Description      = editedIntervention.Description;
            interventionToEdit.FullName         = editedIntervention.FullName;
            interventionToEdit.PhoneNumber      = editedIntervention.PhoneNumber;
            interventionToEdit.Status           = (int)editedIntervention.Status;

            await interventionsTable.ExecuteAsync(TableOperation.Merge(interventionToEdit));

            var interventionItemResponses = _mapper.Map <InterventionItemResponse>(interventionToEdit);

            return(new JsonResult(interventionItemResponses));
        }
コード例 #11
0
 private bool AddressChanged(InterventionEntity interventionToEdit, InterventionDto editedIntervention)
 {
     return(interventionToEdit.Address != editedIntervention.Address);
 }
コード例 #12
0
 public void DoIntervention(InterventionDto interv)
 {
     BLLAccess.InsertIntervention(interv);
 }