コード例 #1
0
        public void ExecuteSaveEmployee()
        {
            Location location = new Location();

            location = employeeView.EmployeeMap.GetPushpinLocation();
            employeeView.EmployeeMap.ReserCounter();

            if (Employee.dateOfEmployment == null)
            {
                Employee.dateOfEmployment = DateTime.Now;
            }

            Employee.Position    = PositionSelected;
            Employee.idPosition  = PositionSelected.id;
            Employee.idWarehouse = WarehouseSelected.id;
            Employee.Warehouse   = WarehouseSelected;
            var info = new InfoWindow();

            if (Employee.code == null)
            {
                Employee.isActive             = true;
                Employee.Address.Localization = new DataModel.Localization()
                {
                    latitude = location.Latitude.ToString(), longitude = location.Longitude.ToString()
                };
                Employee.code = $"/{Employee.firstName}/{Employee.Position.position1}";
                CompanyEntities.Address.Add(Employee.Address);
                CompanyEntities.Employee.Add(Employee);
                CompanyEntities.SaveChanges();
                Employee      = CompanyEntities.Employee.OrderByDescending(em => em.id).First();
                Employee.code = $"{Employee.id}{Employee.code}";
                info.ShowInfo($"Pracownik o kodzie {Employee.code} został zapisany pomyślnie", "Pracownik", "OK");
            }
            else
            {
                Employee.Address.Localization.latitude  = location.Latitude.ToString();
                Employee.Address.Localization.longitude = location.Longitude.ToString();
                Employee.code = $"{Employee.id}/{Employee.firstName}/{Employee.Position.position1}";
                var empl         = CompanyEntities.Employee.Find(Employee.id);
                var address      = CompanyEntities.Address.Find(Employee.Address.id);
                var localization = CompanyEntities.Localization.Find(address.Localization.id);
                CompanyEntities.Entry(localization).CurrentValues.SetValues(Employee.Address.Localization);
                CompanyEntities.Entry(address).CurrentValues.SetValues(Employee.Address);
                CompanyEntities.Entry(empl).CurrentValues.SetValues(Employee);
                info.ShowInfo($"Pracownik o kodzie {Employee.code} został edytowany pomyślnie", "Pracownik", "OK");
            }
            CompanyEntities.SaveChanges();
        }
コード例 #2
0
        private void Btn_Buffer_Click(object sender, RoutedEventArgs e)
        {
            var doc  = UpdateBuffer();
            var info = new InfoWindow();

            if (doc == null)
            {
                info.ShowInfo($"Nie można pozostawić w buforze dokumentu bez pozycji!", $"{documentType}", "Ok");
            }
            else
            {
                info.ShowInfo($"Dokument {doc.code} pozostawiony w buforze!", $"{documentType}", "Ok");
            }
            info.Close();
            Close();
        }
コード例 #3
0
        private void SetPushpins()
        {
            StringBuilder senderBuilder      = new StringBuilder("http://dev.virtualearth.net/REST/v1/Locations?o=xml");
            StringBuilder receiverBuilder    = new StringBuilder("http://dev.virtualearth.net/REST/v1/Locations?o=xml");
            var           parcelAddViewModel = (ParcelAddViewModel)DataContext;

            senderBuilder.Append($"&countryRegion={parcelAddViewModel.SenderCountry}");
            senderBuilder.Append($"&locality={parcelAddViewModel.SenderCity}");
            senderBuilder.Append($"&postalCode={parcelAddViewModel.SenderPostalCode}");
            senderBuilder.Append($"&addressLine={parcelAddViewModel.SenderStreet} {parcelAddViewModel.SenderNumberOfHouse}");
            senderBuilder.Append($"&key={MAP_KEY}");
            From = PinIt(senderBuilder.ToString(), "Nadawca");
            receiverBuilder.Append($"&countryRegion={parcelAddViewModel.ReceiverCountry}");
            receiverBuilder.Append($"&locality={parcelAddViewModel.ReceiverCity}");
            receiverBuilder.Append($"&postalCode={parcelAddViewModel.ReceiverPostalCode}");
            receiverBuilder.Append($"&addressLine={parcelAddViewModel.ReceiverStreet} {parcelAddViewModel.ReceiverNumberOfHouse}");
            receiverBuilder.Append($"&key={MAP_KEY}");
            To = PinIt(receiverBuilder.ToString(), "Odbiorca");
            string uri = $"http://dev.virtualearth.net/REST/V1/Routes/Driving?wp.0=" +
                         $"{From.Latitude},{From.Longitude}&wp.1={To.Latitude},{To.Longitude}&rpo=Points&key={MAP_KEY}";
            var response = DriveRoute(uri);

            if (response != null)
            {
                Route(response);
                SetDistanceAndDuration();
            }
            else
            {
                InfoWindow info = new InfoWindow();
                info.ShowInfo("Nie można wyznaczyć trasy. Proszę spróbować jeszcze raz.", "Błąd wyznaczania trasy", "Ok");
                info.Close();
            }
        }
コード例 #4
0
        private void BtnLogoutSettings_Click(object sender, RoutedEventArgs e)
        {
            IsEnabled = false;
            InfoWindow info = new InfoWindow();

            info.ShowInfo("Czy na pewno chcesz się wylogować?", "Wylogowywanie", "Nie", "Tak");
            if (!info.Answer)
            {
                IsEnabled = true;
                return;
            }
            LoginWindow loginWindow = new LoginWindow();

            loginWindow.ShowDialog();
            if (!loginWindow.Answer)
            {
                Application.Current.Shutdown();
            }

            IsEnabled = true;
            var mvm = ((SettingViewModel)DataContext).MainViewModel;
            var emp = companyEntities.Employee.Include(e => e.Warehouse).FirstOrDefault(e => e.id == Properties.Settings.Default.IdUser);

            mvm.Active             = emp.idPosition == (int)EnumPosition.Warehouseman ? Visibility.Hidden : Visibility.Visible;
            mvm.FooterEmployeeCode = emp.code;
            mvm.FooterWarehouse    = emp.Warehouse.code;
            mvm.SelectedViewModel  = new HomeViewModel();
        }
コード例 #5
0
        private void BtnChangeStatus_Click(object sender, RoutedEventArgs e)
        {
            var        parcelDetailsViewModel = (ParcelDetailsViewModel)DataContext;
            InfoWindow info = new InfoWindow();

            Parcel = CompanyEntities.Parcel
                     .Include(p => p.Status)
                     .Include(p => p.Region)
                     .Include(p => p.Region1)
                     .FirstOrDefault(p => p.id == parcelDetailsViewModel.Parcel.id);
            if (Parcel.idStatus >= parcelDetailsViewModel.StatusSelected.id)
            {
                info.ShowInfo("Wybrany status nie może być niższy niż aktualny", "", "Ok");
                info.Close();
                return;
            }
            HistoryOfParcel history = new HistoryOfParcel()
            {
                idParcel = Parcel.id,
                idStatus = Parcel.idStatus,
                date     = DateTime.Now
            };

            if (parcelDetailsViewModel.StatusSelected.id > (int)EnumParcelStatus.beetwen)
            {
                history.idWarehouse = Parcel.Region.idWarehouse;
            }
            else if (Parcel.Region1 != null)
            {
                history.idWarehouse = Parcel.Region1.idWarehouse;
            }
            else
            {
                history.idWarehouse = Properties.Settings.Default.Warehouse;
            }
            CompanyEntities.HistoryOfParcel.Add(history);
            Parcel.idStatus = parcelDetailsViewModel.StatusSelected.id;
            if (Parcel.idStatus == (int)EnumParcelStatus.delivered)
            {
                Parcel.dateOfDelivery = DateTime.Now;
            }
            CompanyEntities.SaveChanges();
            Counter = 0;
            AddDoc(Parcel);
            info.ShowInfo("Status został zmieniony pomyślnie", "", "Ok");
            info.Close();
        }
コード例 #6
0
        public void ExecuteDeleteEmployee()
        {
            var info             = new InfoWindow();
            var emoloyeeToDelete = CompanyEntities.Employee.Find(Employee.id);

            emoloyeeToDelete.isActive = false;
            CompanyEntities.SaveChanges();
            info.ShowInfo($"Pracownik o kodzie {emoloyeeToDelete.code} został dezaktywowany pomyślnie", "Pracownik", "OK");
        }
コード例 #7
0
        private void Btn_PutOut_Click(object sender, RoutedEventArgs e)
        {
            var addViewModel = (WarehouseAddViewModel)DataContext;
            var doc          = UpdateBuffer();
            var info         = new InfoWindow();

            if (doc == null)
            {
                info.ShowInfo($"Nie można wystawić dokumentu bez pozycji!", $"{documentType}", "Ok");
                info.Close();
                return;
            }
            doc = companyEntities.Document.FirstOrDefault(d => d.id == doc.id);
            double summary = 0.0;
            var    temp    = companyEntities.ParcelMoving.Include(p => p.Parcel).Where(p => documentType == EnumTypeOfDocument.PZ ? p.idDocPZ == doc.id : p.idDocWZ == doc.id).ToList();

            if (temp.Count == 0)
            {
                info.ShowInfo($"Nie można wystawić dokumentu bez pozycji!", $"{documentType}", "Ok");
                info.Close();
                return;
            }
            foreach (var d in temp)
            {
                changeStatus(d.idParcel);
                if (documentType == EnumTypeOfDocument.PZ)
                {
                    d.readingPZ = true;
                }
                else if (documentType == EnumTypeOfDocument.WZ)
                {
                    d.readingWZ = true;
                }
                summary += (double)d.Parcel.amount;
            }
            doc.summary    = (decimal)summary;
            doc.exposure   = true;
            doc.idEmployee = Properties.Settings.Default.IdUser;
            companyEntities.SaveChanges();

            info.ShowInfo($"Dokument {doc.code} został wystawiony pomyślnie!", $"{documentType}", "Ok");
            info.Close();
            Close();
        }
コード例 #8
0
        private void BtnChangePassSettings_Click(object sender, RoutedEventArgs e)
        {
            ChangePasswordWindow change = new ChangePasswordWindow();

            if (change.Answer)
            {
                InfoWindow info = new InfoWindow();
                info.ShowInfo("Hasło zmienione pomyślnie!", "Zmiana hasła", "Ok");
                info.Close();
            }
            change.ShowDialog();
            change.Close();
        }
コード例 #9
0
        private void SendParcel_Click(object sender, RoutedEventArgs e)
        {
            var        parcelAddViewModel = (ParcelAddViewModel)DataContext;
            InfoWindow info = new InfoWindow();

            if (!CalculateCost())
            {
                return;
            }

            DataModel.Region senderRegion = null;
            if (parcelAddViewModel.ParcelSendMethodSelected.id == 2)
            {
                senderRegion = ParcelMap.GetCurrentRegion(From, companyEntities);
                if (senderRegion == null)
                {
                    info.ShowInfo("Lokalizacja nadania przesyłki znajduje się w nieobsługiwanym regionie!", "Nadanie przesyłki", "Ok");
                    return;
                }
            }
            DataModel.Region receiverRegion = null;
            receiverRegion = ParcelMap.GetCurrentRegion(To, companyEntities);
            if (receiverRegion == null)
            {
                info.ShowInfo("Lokalizacja odbioru przesyłki znajduje się w nieobsługiwanym regionie!", "Nadanie przesyłki", "Ok");
                return;
            }

            if (parcelAddViewModel.ParcelTypeSelected.id == (int)EnumTypeOfParcel.CashOnDelivery)
            {
                info.ShowInfo($"Przesyłka została wyceniona na kwotę {parcelAddViewModel.MyTariff.cost + 10} zł. Chcesz nadać przesyłkę?", "Nadanie przeyłki", "Nie", "Tak");
            }
            else
            {
                info.ShowInfo($"Przesyłka została wyceniona na kwotę {parcelAddViewModel.MyTariff.cost} zł. Chcesz nadać przesyłkę?", "Nadanie przeyłki", "Nie", "Tak");
            }

            if (!info.Answer)
            {
                return;
            }

            if (parcelAddViewModel.SendParcel(senderRegion, receiverRegion, From, To, (bool)generateLabel.IsChecked, (bool)generateConfirmate.IsChecked))
            {
                info.ShowInfo("Przesyłka została nadana!", "Nadanie przesyłki", "Ok");
                ParcelMap.ClearAllMap();
                Worth.Text = "0,00 zł";
                generateLabel.IsChecked             = false;
                generateConfirmate.IsChecked        = false;
                parcelAddViewModel.VisibilityOption = Visibility.Hidden;
            }
            else
            {
                info.ShowInfo("Nie udało się nadać przesyłki!", "Nadanie przesyłki", "Ok");
            }
        }
コード例 #10
0
        private void BtnDelete_Click(object sender, RoutedEventArgs e)
        {
            var addViewModel = (WarehouseAddViewModel)DataContext;
            var document     = addViewModel.Document;

            if (document == null)
            {
                return;
            }
            foreach (var parcel in companyEntities.ParcelMoving.Where(p => documentType == EnumTypeOfDocument.PZ ? p.idDocPZ == document.id : p.idDocWZ == document.id))
            {
                companyEntities.ParcelMoving.Remove(parcel);
            }
            companyEntities.Document.Remove(companyEntities.Document.FirstOrDefault(d => d.id == document.id));
            companyEntities.SaveChanges();
            var info = new InfoWindow();

            info.ShowInfo($"Dokument {document.code} został usunięty pomyślnie!", $"{documentType}", "Ok");
            info.Close();
            Close();
        }
コード例 #11
0
 public void ShowBuildingInfo(Building building)
 {
     infoWindow.ShowInfo(building);
 }
コード例 #12
0
        private void BtnAddRegion_Click(object sender, RoutedEventArgs e)
        {
            var info = new InfoWindow();

            activationFunction = true;
            MyMap.Children.Remove(polyline);
            MyMap.ClearTextInMap();
            RegionOption.Visibility = Visibility.Hidden;
            DataModel.Localization startLocal = new DataModel.Localization()
            {
                latitude = location.Latitude.ToString(), longitude = location.Longitude.ToString()
            };
            DataModel.Localization endLocal = new DataModel.Localization()
            {
                latitude = polyline.Locations[2].Latitude.ToString(), longitude = polyline.Locations[2].Longitude.ToString()
            };
            Warehouse warehouse = (Warehouse)RegionWarehouse.SelectedItem;
            Employee  empl      = (Employee)RegionEmployee.SelectedItem;
            var       employee  = companyEntities.Employee.FirstOrDefault(e => e.id == empl.id);

            if (region != null)
            {
                if (MyMap.IsAllowRegion(location, polyline.Locations[2], companyEntities, region.id))
                {
                    var start = companyEntities.Localization.First(l => l.id == region.idStartLocalization);
                    var end   = companyEntities.Localization.First(l => l.id == region.idEndLocalization);
                    start.latitude  = startLocal.latitude;
                    start.longitude = startLocal.longitude;
                    end.latitude    = endLocal.latitude;
                    end.longitude   = endLocal.longitude;
                    var reg = companyEntities.Region.Find(region.id);
                    reg.code          = $"{warehouse.code}/{reg.id}";
                    reg.idWarehouse   = warehouse.id;
                    employee.idRegion = reg.id;
                    employee.Region   = reg;
                    companyEntities.SaveChanges();
                    info.ShowInfo("Region edytowano pomyślnie", "Region", "OK");
                }
                else
                {
                    info.ShowInfo("Nowy region nie może pokrywać regionów już istniejących!", "Region", "OK");
                }
            }
            else if (MyMap.IsAllowRegion(location, polyline.Locations[2], companyEntities))
            {
                DataModel.Region newRegion = new DataModel.Region();
                companyEntities.Localization.Add(startLocal);
                companyEntities.Localization.Add(endLocal);
                companyEntities.SaveChanges();
                newRegion.idWarehouse         = warehouse.id;
                newRegion.idStartLocalization = startLocal.id;
                newRegion.idEndLocalization   = endLocal.id;
                companyEntities.Region.Add(newRegion);
                companyEntities.SaveChanges();
                var temp = companyEntities.Region.OrderByDescending(r => r.id).First();
                temp.code         = $"{warehouse.code}/{temp.id}";
                employee.idRegion = temp.id;
                employee.Region   = temp;
                companyEntities.SaveChanges();
                info.ShowInfo("Region zapisano pomyślnie", "Region", "OK");
            }
            else
            {
                info.ShowInfo("Nowy region nie może pokrywać regionów już istniejących!", "Region", "OK");
            }
            region = null;
            BtnShowRegions_Click(sender, e);
        }
コード例 #13
0
        private bool CalculateCost()
        {
            var        parcelAddViewModel = (ParcelAddViewModel)DataContext;
            InfoWindow info = new InfoWindow();

            if (Lock || parcelAddViewModel.ParcelDistance == 0)
            {
                if (_noOfErrorsOnScreen == 0)
                {
                    info.ShowInfo("Nie można obliczyć kosztu dopóki nie zostanie wyznaczona trasa.\nCzy wyznaczyć trasę automatycznie" +
                                  " na podstawie adresów?", "Błąd wyliczenia kosztów", "Nie", "Tak");
                }
                else
                {
                    info.ShowInfo("Nie można obliczyć kosztu dopóki nie zostanie wyznaczona trasa." +
                                  "\nNie można wyznaczyć trasy dopóki nie zostaną wprowadzone wymagane dane", "Błąd wyliczenia kosztów", "Ok");
                    info.Close();
                    return(false);
                }
                if (info.Answer)
                {
                    SetPushpins();
                }
                else
                {
                    info.Close();
                    return(false);
                }
            }
            double dimensions = double.Parse(parcelAddViewModel.ParcelHeight) + double.Parse(parcelAddViewModel.ParcelLength) + double.Parse(parcelAddViewModel.ParcelWidth);

            dimensions *= 0.1;
            double distance = parcelAddViewModel.ParcelDistance * 0.01;
            double weight   = double.Parse(parcelAddViewModel.ParcelWeight) * 0.1;
            double worth    = double.Parse(parcelAddViewModel.ParcelWorth) * 0.001;

            int result = (int)(dimensions + distance + weight + worth);

            switch (parcelAddViewModel.ParcelTypeSelected.id)
            {
            case (int)EnumTypeOfParcel.StandardParcel:
                break;

            case (int)EnumTypeOfParcel.UnstandardParcel:
                result += (int)(result * 0.1);
                break;
            }

            var myTariff = companyEntities.Tariff.FirstOrDefault(t => result >= t.valueFrom && result <= t.valueTo);

            if (myTariff == null)
            {
                info.ShowInfo("Nie można obliczyć kosztu!", "Błąd wyliczenia kosztów", "Ok");
                info.Close();
                return(false);
            }
            parcelAddViewModel.MyTariff = myTariff;
            if (parcelAddViewModel.ParcelTypeSelected.id == (int)EnumTypeOfParcel.CashOnDelivery)
            {
                Worth.Text = (myTariff.cost + 10).ToString();
            }
            else
            {
                Worth.Text = myTariff.cost.ToString();
            }
            return(true);
        }
コード例 #14
0
        private async void SetManualPushpinsAsync()
        {
            Lock = true;
            InfoWindow info     = new InfoWindow();
            string     sender   = "Nadawca";
            string     receiver = "Odbiorca";

            if (From != null)
            {
                info.ShowInfo("Czy chcesz zmienić lokalizacje nadawcy?", "Zmiana lokalizacji", "Nie", "Tak");
                if (info.Answer)
                {
                    info.ShowInfo("Dodaj lokalizację nadawcy poprzez dwukrotne kliknięcie na mapie!", "Dodaj pinezkę", "Ok");
                    await ParcelMap.PinPushpinWhenClicked(true, sender);
                }
            }
            else
            {
                info.ShowInfo("Dodaj lokalizację nadawcy poprzez dwukrotne kliknięcie na mapie!", "Dodaj pinezkę", "Ok");
                await ParcelMap.PinPushpinWhenClicked(false, sender);
            }

            if (To != null)
            {
                info.ShowInfo("Czy chcesz zmienić lokalizacje odbiorcy?", "Zmiana lokalizacji", "Nie", "Tak");
                if (info.Answer)
                {
                    info.ShowInfo("Dodaj lokalizację odbiorcy poprzez dwukrotne kliknięcie na mapie!", "Dodaj pinezkę", "Ok");
                    await ParcelMap.PinPushpinWhenClicked(true, receiver);
                }
            }
            else
            {
                info.ShowInfo("Dodaj lokalizację odbiorcy poprzez dwukrotne kliknięcie na mapie!", "Dodaj pinezkę", "Ok");
                await ParcelMap.PinPushpinWhenClicked(false, receiver);
            }

            var pushpins = ParcelMap.GetPushpins();

            From = pushpins.FirstOrDefault(p => p.Content.Equals(sender)).Location;
            To   = pushpins.FirstOrDefault(p => p.Content.Equals(receiver)).Location;

            if (From == null || To == null)
            {
                info.ShowInfo("Ze względu na brak jednej z lokalizacji nie można wyznaczyć trasy.\nProszę powtórz procedurę dodawania pinezek.", "Błąd wyznaczania trasy", "Ok");
                info.Close();
                Lock = false;
                return;
            }
            string uri = $"http://dev.virtualearth.net/REST/V1/Routes/Driving?wp.0={From.Latitude},{From.Longitude}&wp.1={To.Latitude},{To.Longitude}&rpo=Points&key={MAP_KEY}";

            var response = DriveRoute(uri);

            if (response != null)
            {
                Route(response);
                SetDistanceAndDuration();
            }
            else
            {
                info.ShowInfo("Nie można wyznaczyć trasy. Proszę spróbować jeszcze raz.", "Błąd wyznaczania trasy", "Ok");
            }

            info.Close();
            Lock = false;
        }