예제 #1
0
        private void faxService_EinsatzCreated(object sender, EinsatzCreatedEventArgs e)
        {
            if (e == null || e.Einsatz == null)
            {
                return;
            }

            if (_apiService == null)
            {
                return;
            }

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

                    _apiService.CreateAlarm(e.Einsatz);
                }
                catch (Exception ex)
                {
                    ExceptionOccured.RaiseEvent(this, new ExceptionEventArgs
                    {
                        Methode = MethodBase.GetCurrentMethod(),
                        Error   = ex
                    });
                }
            });
        }
        private void faxService_EinsatzCreated(object sender, EinsatzCreatedEventArgs e)
        {
            if (e == null || e.Einsatz == null)
            {
                return;
            }

            var _tempTime = e.Einsatz.AlarmTime;
            //Set new AlarmTime if AMS was activ in the last 5min
            var _pagerMessages = ServiceLocator.Current.GetInstance <MainPagersViewModel>()
                                 .PagerMessages.OrderByDescending(a => a.Time).ToList();

            if (_pagerMessages != null)
            {
                foreach (var _message in _pagerMessages)
                {
                    //Stop if time is longer ago then 5 minutes
                    if ((DateTime.Now - _message.Time).Minutes > 5)
                    {
                        break;
                    }

                    //Change time only if prio
                    if (_message.Priority)
                    {
                        e.Einsatz.AlarmTime = _message.Time;
                    }
                }

                //Logging
                if (e.Einsatz.AlarmTime != _tempTime)
                {
                    Logger.WriteDebug(MethodBase.GetCurrentMethod(),
                                      "Einsatz -> AlarmTime changed to " + e.Einsatz.AlarmTime);
                }
            }

            //Show Window
            var _alarmWindow = new AlarmWindow(e.Einsatz);

            _alarmWindow.Topmost = IsAdminMode ? false : true;
            _alarmWindow.Show();
        }
예제 #3
0
        private void faxService_EinsatzCreated(object sender, EinsatzCreatedEventArgs e)
        {
            if (e == null || e.Einsatz == null)
            {
                return;
            }

            Task.Factory.StartNew(() =>
            {
                try
                {
                    var _message     = new Message();
                    _message.Subject = Settings.Default.MailOutput_Subject;

                    //Empfänger
                    _message.Recivers = new List <User>();
                    _message.Recivers.AddRange(_business.GetUserWithFaxMessageServiceMailOn().ToList());

                    //Nachricht
                    _message.Text = "EINSATZDATEN:" + Environment.NewLine;
                    if (!string.IsNullOrEmpty(e.Einsatz.Schlagwort))
                    {
                        _message.Text += "Schlagwort: " + e.Einsatz.Schlagwort + Environment.NewLine;
                    }

                    if (!string.IsNullOrEmpty(e.Einsatz.Stichwort))
                    {
                        _message.Text += "Stichwort: " + e.Einsatz.Stichwort + Environment.NewLine;
                    }

                    if (!string.IsNullOrEmpty(e.Einsatz.Objekt))
                    {
                        _message.Text += "Objekt: " + e.Einsatz.Objekt + Environment.NewLine;
                    }

                    if (!string.IsNullOrEmpty(e.Einsatz.Straße))
                    {
                        _message.Text += "Straße: " + e.Einsatz.Straße + " " + e.Einsatz.Hausnummer +
                                         Environment.NewLine;
                    }

                    if (!string.IsNullOrEmpty(e.Einsatz.Ort))
                    {
                        _message.Text += "Ort: " + e.Einsatz.Ort + Environment.NewLine;
                    }

                    if (!string.IsNullOrEmpty(e.Einsatz.Abschnitt))
                    {
                        _message.Text += "Abschnitt: " + e.Einsatz.Abschnitt + Environment.NewLine;
                    }

                    if (!string.IsNullOrEmpty(e.Einsatz.Kreuzung))
                    {
                        _message.Text += "Kreuzung: " + e.Einsatz.Kreuzung + Environment.NewLine;
                    }

                    if (!string.IsNullOrEmpty(e.Einsatz.Station))
                    {
                        _message.Text += "Station: " + e.Einsatz.Station + Environment.NewLine;
                    }

                    if (!string.IsNullOrEmpty(e.Einsatz.Bemerkung))
                    {
                        _message.Text += "Bemerkung: " + e.Einsatz.Bemerkung + Environment.NewLine;
                    }

                    _message.Text += Environment.NewLine;
                    _message.Text += Environment.NewLine;
                    _message.Text += "EINSATZMITTEL:" + Environment.NewLine;
                    foreach (var _vehicle in e.Einsatz.Einsatzmittel)
                    {
                        _message.Text += _vehicle.Name + Environment.NewLine;
                    }

                    _message.Text  += Environment.NewLine;
                    _message.Text  += Environment.NewLine;
                    var coordinaten = e.Einsatz.KoordinatenWGS84();
                    if (coordinaten != null)
                    {
                        var nfi = new NumberFormatInfo {
                            NumberDecimalSeparator = "."
                        };
                        var googleMapsUrl =
                            $"https://www.google.com/maps/search/?api=1&query={coordinaten.Latitude.ToString(nfi)},{coordinaten.Longitude.ToString(nfi)}";
                        _message.Text += $"ROUTE: {Environment.NewLine}{googleMapsUrl}" + Environment.NewLine;
                    }
                    else if (!string.IsNullOrEmpty(e.Einsatz.Straße) && !string.IsNullOrEmpty(e.Einsatz.Hausnummer) &&
                             !string.IsNullOrEmpty(e.Einsatz.Ort))
                    {
                        var googleMapsQuery = $"{e.Einsatz.Straße} {e.Einsatz.Hausnummer}, {e.Einsatz.Ort}";
                        var googleMapsUrl   =
                            $"https://www.google.com/maps/search/?api=1&query={HttpUtility.UrlEncode(googleMapsQuery)}";
                        _message.Text += $"ROUTE: {Environment.NewLine}{googleMapsUrl}" + Environment.NewLine;
                    }

                    //Start to send mail without attachment
                    sendMail(_message);


                    //Empfänger
                    _message.Recivers = new List <User>();
                    _message.Recivers.AddRange(_business.GetUserWithFaxMessageServiceFaxOn().ToList());

                    //Add Faximage as attachment
                    var _attachmentPath = e.Einsatz.FaxPath;
                    if (Path.GetExtension(e.Einsatz.FaxPath).ToLower() == ".tif")
                    {
                        _attachmentPath =
                            $"{Settings.Default.WorkingFolder}\\Temp\\ALARMFAX_PNG_{e.Einsatz.AlarmTime.ToString("yyyy-MM-dd_HH-mm-ss")}.png";
                        TiffConverter.SaveTiffAsImage(e.Einsatz.FaxPath, _attachmentPath);
                    }

                    _message.AttachmentPath = _attachmentPath;

                    //Start to send mail with attachment
                    sendMail(_message);
                }
                catch (Exception ex)
                {
                    ExceptionOccured.RaiseEvent(this, new ExceptionEventArgs
                    {
                        Methode = MethodBase.GetCurrentMethod(),
                        Error   = ex
                    });
                }
            });
        }
        private void faxService_EinsatzCreated(object sender, EinsatzCreatedEventArgs e)
        {
            if (e == null || e.Einsatz == null)
            {
                return;
            }

            Task.Factory.StartNew(() =>
            {
                var finishedEventArgs = new FinishedEventArgs(e.Einsatz);

                if (IsRunning == false)
                {
                    //To start PrinterService
                    Finished.RaiseEvent(this, finishedEventArgs);
                    return;
                }

                try
                {
                    //start location
                    var _startLocation = new Location(Settings.Default.Route_StartLocation);
                    if (_startLocation == null)
                    {
                        Logger.WriteDebug(MethodBase.GetCurrentMethod(), "no startpoint");
                        return;
                    }

                    //stop location
                    Location _stopLocation = null;
                    var coordinaten        = e.Einsatz.KoordinatenWGS84();
                    if (coordinaten != null)
                    {
                        _stopLocation = new Location(coordinaten.Latitude, coordinaten.Longitude);
                    }

                    if (_stopLocation == null)
                    {
                        var _stopAddress = $"{e.Einsatz.Ort}, {e.Einsatz.Straße} {e.Einsatz.Hausnummer}";
                        Logger.WriteDebug(MethodBase.GetCurrentMethod(), "set address -> " + _stopAddress);

                        _stopLocation = clientGeocode(_stopAddress);
                    }

                    if (_stopLocation == null)
                    {
                        Logger.WriteDebug(MethodBase.GetCurrentMethod(), "destination not found");
                        return;
                    }
                    else
                    {
                        Logger.WriteDebug(MethodBase.GetCurrentMethod(), "destination found -> " + _stopLocation);
                    }

                    var _route = clientRouting(_startLocation, _stopLocation);
                    if (_route == null || !_route.IsValid)
                    {
                        Logger.WriteDebug(MethodBase.GetCurrentMethod(), "route not found");
                        return;
                    }

                    finishedEventArgs.Found       = true;
                    finishedEventArgs.Distance    = _route.Distance;
                    finishedEventArgs.ImageWindow = clientMapImage(_route, Settings.Default.Route_ImageSize.X,
                                                                   Settings.Default.Route_ImageSize.Y, e.Einsatz.Marker);
                    finishedEventArgs.ImageReport = clientMapImage(_route, 1024, 647, e.Einsatz.Marker);
                    finishedEventArgs.Description = clientGetDescription(_route);
                }
                catch (Exception ex)
                {
                    ExceptionOccured.RaiseEvent(this, new ExceptionEventArgs
                    {
                        Methode = MethodBase.GetCurrentMethod(),
                        Error   = ex
                    });
                }
                finally
                {
                    //To start PrinterService
                    Finished.RaiseEvent(this, finishedEventArgs);
                }
            });
        }
예제 #5
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
                    });
                }
            });
        }