コード例 #1
0
        public AlarmCreateResult UpdateAlarm(string alarmId, AlarmDto alarmDto)
        {
            if (string.IsNullOrEmpty(_token))
            {
                throw new ArgumentNullException(nameof(_token));
            }

            if (string.IsNullOrEmpty(alarmId))
            {
                throw new ArgumentNullException(nameof(alarmId));
            }

            if (alarmDto == null)
            {
                throw new ArgumentNullException("alarmDto");
            }

            var _request = new RestRequest(Method.PUT)
            {
                RequestFormat = DataFormat.Json,
                Resource      = $"alarm/{alarmId}"
            };

            _request.AddHeader("Content-Type", "application/json");
            _request.AddHeader("Authorization", $"Bearer {_token}");

            var test = alarmDto.ToJson();

            _request.AddJsonBody(test);

            var _client = new RestClient(Settings.Default.Alarmapp_WebserviceUrl2);

            _client.UserAgent = "RISv" + Assembly.GetExecutingAssembly().GetName().Version;

            var _response = _client.Execute <AlarmCreateResult>(_request);

            if (_response.ErrorException != null)
            {
                Logger.WriteError(MethodBase.GetCurrentMethod(),
                                  "Error retrieving response: " + _response.ErrorMessage);
                return(null);
            }

            if (_response.Data == null)
            {
                Logger.WriteError(MethodBase.GetCurrentMethod(), "Error retrieving response: No Data");
                return(null);
            }

            return(_response.Data);
        }
コード例 #2
0
        public async Task <WebApiResult> Save(AlarmDto alarm)
        {
            try {
#if DEBUG
                await Task.Delay(500);
#endif
                return(await Task.Factory.StartNew(() => {
                    this._service.Save(alarm, GetUserDto());
                    return WebApiResult.Succeed();
                }));
            } catch (Exception e) {
                Logger.e("Save", e);
                return(WebApiResult.Failed(e.Message));
            }
        }
コード例 #3
0
        /// <summary>
        ///     Creates or Updates alarm </summary>
        /// <param name="alarmDto">alarm DTO</param>
        /// <param name="userDto">user who updates the alarm</param>
        public void Save(AlarmDto alarmDto, UserDto userDto)
        {
            var rep   = UnitOfWork.GetRepository <Alarm>();
            var model = rep.GetById(alarmDto.EntityId);

            if (model == null)
            {
                model = this.Mapper.Map <Alarm>(alarmDto);
                this.UnitOfWork.GetRepository <Alarm>().Insert(model, userDto.Id);
            }
            else
            {
                this.Mapper.Map(alarmDto, model);
                this.UnitOfWork.GetRepository <Alarm>().Update(model, userDto.Id);
            }
            this.UnitOfWork.SaveChanges();
        }
コード例 #4
0
        public void UpdateAlarm(int id, AlarmDto alarmDto)
        {
            if (!ModelState.IsValid)
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }

            var alarmInDb = _context.Alarms.SingleOrDefault(c => c.Id == id);

            if (alarmInDb == null)
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }

            Mapper.Map(alarmDto, alarmInDb);

            _context.SaveChanges();
        }
コード例 #5
0
        public async Task <IHttpActionResult> CreateAlarm(AlarmDto alarmDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var alarm = Mapper.Map <AlarmDto, Alarm>(alarmDto);

            _context.Alarms.Add(alarm);
            _context.SaveChanges();
            var rooms = _context.Rooms.ToList().Select(Mapper.Map <Room, Room>);
            var room  = rooms.FirstOrDefault(r => r.Id == alarmDto.RoomId);

            alarmDto.Id = alarm.Id;
            string title = alarmDto.Name + " - " + room.Name;
            string body  = alarmDto.Name + " - " + room.Name + alarmDto.NotifyDate.ToString();
            await ApplicationFirebase.SendData(title, body);

            return(Ok());
        }
コード例 #6
0
        private void faxService_EinsatzCreated(object sender, EinsatzCreatedEventArgs e)
        {
            if (e == null || e.Einsatz == null)
            {
                return;
            }

            if (_apiService == null)
            {
                return;
            }

            timerAlarmEnd_Reset();

            Task.Factory.StartNew(() =>
            {
                try
                {
                    Logger.WriteDebug(MethodBase.GetCurrentMethod(), "Fax-Message");

                    var alarmDto = new AlarmDto();

                    //Select alarmgroups
                    var _groups = _business.GetAlarmappGroupWithAlarmfax();
                    foreach (var group in _groups)
                    {
                        if (group.Vehicles.Count > 0 && group.OnlyWithPager == false)
                        {
                            var faxVehicleIds = e.Einsatz.Einsatzmittel.Select(faxVehicle => faxVehicle.Id);
                            var result        = group.Vehicles.Where(groupVehicle => faxVehicleIds.Contains(groupVehicle.Id))
                                                .ToList();
                            if (result != null && result.Count >= 1)
                            {
                                alarmDto.Groups.Add(group.GroupId);
                            }
                        }
                        else if (group.Vehicles.Count == 0 && group.OnlyWithPager)
                        {
                            var pagerIds = _currentPagerList.Select(pager => pager.Id);
                            var result   = group.Pagers.Where(groupPager => pagerIds.Contains(groupPager.Id)).ToList();
                            if (result != null && result.Count >= 1)
                            {
                                alarmDto.Groups.Add(group.GroupId);
                            }
                        }
                        else if (group.Vehicles.Count > 0 && group.OnlyWithPager)
                        {
                            var faxVehicleIds = e.Einsatz.Einsatzmittel.Select(faxVehicle => faxVehicle.Id);
                            var resultVehicle = group.Vehicles
                                                .Where(groupVehicle => faxVehicleIds.Contains(groupVehicle.Id)).ToList();

                            var pagerIds    = _currentPagerList.Select(pager => pager.Id);
                            var resultPager = group.Pagers.Where(groupPager => pagerIds.Contains(groupPager.Id))
                                              .ToList();

                            if (resultVehicle != null && resultVehicle.Count >= 1 &&
                                resultPager != null && resultPager.Count >= 1)
                            {
                                alarmDto.Groups.Add(group.GroupId);
                            }
                        }
                        else // no fahrzeug filter & no pager filter
                        {
                            alarmDto.Groups.Add(group.GroupId);
                        }
                    }

                    if (alarmDto.Groups.Count == 0)
                    {
                        Logger.WriteDebug(MethodBase.GetCurrentMethod(), "create alarm -> no alarmgroups found");
                        return;
                    }

                    //Create titel
                    var _titel = "EINSATZ";
                    if (!string.IsNullOrWhiteSpace(e.Einsatz.Stichwort) &&
                        !string.IsNullOrWhiteSpace(e.Einsatz.Schlagwort))
                    {
                        _titel = $"{e.Einsatz.Stichwort} - {e.Einsatz.Schlagwort}";
                    }
                    else if (!string.IsNullOrWhiteSpace(e.Einsatz.Stichwort) &&
                             string.IsNullOrWhiteSpace(e.Einsatz.Schlagwort))
                    {
                        _titel = $"{e.Einsatz.Stichwort}";
                    }
                    else if (string.IsNullOrWhiteSpace(e.Einsatz.Stichwort) &&
                             !string.IsNullOrWhiteSpace(e.Einsatz.Schlagwort))
                    {
                        _titel = $"{e.Einsatz.Schlagwort}";
                    }

                    alarmDto.Alarm.Title = _titel;

                    //Set vehicles
                    alarmDto.Alarm.AlarmDetails.Vehicles = e.Einsatz.Einsatzmittel?.Select(x => x.Name).ToList();
                    alarmDto.Alarm.AlarmDetails.Object   = e.Einsatz?.Objekt;

                    //Set coordinates
                    if (!string.IsNullOrEmpty(e.Einsatz.Ort))
                    {
                        alarmDto.Alarm.AlarmDetails.Address.City = e.Einsatz.Ort;
                    }

                    if (!string.IsNullOrEmpty(e.Einsatz.Straße))
                    {
                        alarmDto.Alarm.AlarmDetails.Address.Street = new Street
                        {
                            line = $"{e.Einsatz.Straße} {e.Einsatz.Hausnummer}"
                        }
                    }
                    ;

                    ;
                    var coordinaten = e.Einsatz.KoordinatenWGS84();
                    if (coordinaten != null)
                    {
                        alarmDto.Alarm.AlarmDetails.Address.Coordinates           = new Coordinates();
                        alarmDto.Alarm.AlarmDetails.Address.Coordinates.Latitude  = coordinaten.Latitude;
                        alarmDto.Alarm.AlarmDetails.Address.Coordinates.Longitude = coordinaten.Longitude;
                    }

                    //Create text
                    if (!string.IsNullOrEmpty(e.Einsatz.Bemerkung))
                    {
                        alarmDto.Alarm.AlarmDetails.Texts = new List <string>();
                        alarmDto.Alarm.AlarmDetails.Texts.Add(e.Einsatz.Bemerkung);
                    }

                    //Send alarm to backend
                    Logger.WriteDebug(MethodBase.GetCurrentMethod(), $"create alarm -> {alarmDto}");

                    if (string.IsNullOrEmpty(_currentAlarmId))
                    {
                        var _alarmResult = _apiService.CreateAlarm(alarmDto);
                        if (_alarmResult == null || string.IsNullOrEmpty(_alarmResult.alarm_id))
                        {
                            Logger.WriteDebug(MethodBase.GetCurrentMethod(), "create alarm -> ERROR");
                            return;
                        }

                        _currentAlarmId = _alarmResult.alarm_id;
                        Logger.WriteDebug(MethodBase.GetCurrentMethod(), $"create alarm -> alarmId[{_currentAlarmId}]");
                    }
                    else
                    {
                        var _alarmResult = _apiService.UpdateAlarm(_currentAlarmId, alarmDto);
                        if (_alarmResult == null || string.IsNullOrEmpty(_alarmResult.alarm_id))
                        {
                            Logger.WriteDebug(MethodBase.GetCurrentMethod(), "update alarm -> ERROR");
                            return;
                        }

                        Logger.WriteDebug(MethodBase.GetCurrentMethod(), $"update alarm -> alarmId[{_currentAlarmId}]");
                    }

                    Alarmed.RaiseEvent(this, new AlarmedEventArgs(e.Einsatz.Guid, _currentAlarmId));
                    timerAlarmEnd_Elapsed(this, null); // after a fax, alarm could not be updated
                }
                catch (Exception ex)
                {
                    ExceptionOccured.RaiseEvent(this, new ExceptionEventArgs
                    {
                        Methode = MethodBase.GetCurrentMethod(),
                        Error   = ex
                    });
                }
            });
        }
コード例 #7
0
        private void decoderService_PagerMessageReceived(object sender, PagerMessageEventArgs e)
        {
            if (e == null || e.Pager == null)
            {
                return;
            }

            if (_apiService == null)
            {
                return;
            }

            timerAlarmEnd_Reset();

            Task.Factory.StartNew(() =>
            {
                try
                {
                    Logger.WriteDebug(MethodBase.GetCurrentMethod(), $"Pager-Message({e.Identifier})");

                    if (!_currentPagerList.Contains(e.Pager))
                    {
                        _currentPagerList.Add(e.Pager);
                    }

                    if (e.Pager.AlarmappGroups?.Count == 0 && string.IsNullOrEmpty(_currentAlarmId))
                    {
                        return;
                    }

                    var alarmDto         = new AlarmDto();
                    alarmDto.Alarm.Title = "EINSATZ";

                    // add alarmgroups to dto
                    foreach (var group in e.Pager.AlarmappGroups)
                    {
                        alarmDto.Groups.Add(group.GroupId);
                    }

                    // add text to dto
                    alarmDto.Alarm.AlarmDetails.Texts = new List <string>();
                    foreach (var pager in _currentPagerList)
                    {
                        alarmDto.Alarm.AlarmDetails.Texts.Add($"{pager.Identifier} - {pager.Name}");
                    }

                    //Send alarm to backend
                    Logger.WriteDebug(MethodBase.GetCurrentMethod(), $"create alarm -> {alarmDto}");

                    if (string.IsNullOrEmpty(_currentAlarmId))
                    {
                        var _alarmResult = _apiService.CreateAlarm(alarmDto);
                        if (_alarmResult == null || string.IsNullOrEmpty(_alarmResult.alarm_id))
                        {
                            Logger.WriteDebug(MethodBase.GetCurrentMethod(), "create alarm -> ERROR");
                            return;
                        }

                        _currentAlarmId = _alarmResult.alarm_id;
                        Logger.WriteDebug(MethodBase.GetCurrentMethod(), $"create alarm -> alarmId[{_currentAlarmId}]");
                    }
                    else
                    {
                        var _alarmResult = _apiService.UpdateAlarm(_currentAlarmId, alarmDto);
                        if (_alarmResult == null || string.IsNullOrEmpty(_alarmResult.alarm_id))
                        {
                            Logger.WriteDebug(MethodBase.GetCurrentMethod(), "update alarm -> ERROR");
                            return;
                        }

                        Logger.WriteDebug(MethodBase.GetCurrentMethod(), $"update alarm -> alarmId[{_currentAlarmId}]");
                    }
                }
                catch (Exception ex)
                {
                    ExceptionOccured.RaiseEvent(this, new ExceptionEventArgs
                    {
                        Methode = MethodBase.GetCurrentMethod(),
                        Error   = ex
                    });
                }
            });
        }