Akcje

< Cofnij

 

Informacja

Zobacz jak dodać moduł do aplikacji: Definicja Dodatków

 

W tym artykule dowiesz się jak dodać akcje (przycisk w toolbarze), przy pomocy której operator będzie mógł (włączyć/wyłączyć) samochód z użycia.

Dodatkowo stworzymy nową encję SamochodAktywacjaZmiany, w której będziemy rejestrować wszystkie właczenia i wyłączenia samochodu z użycia. Powstanie w ten sposób historia zmian z informacją kto i kiedy zmieniał dostępność samochodu. Encja SamochodAktywacjaZmiany będzie się składać z następujących pól: Samochód (referencja do samochód One-To-Many), Operator (kto dokonał zmiany), Data (data zmiany), Operacja (tu będziemy zapisywać wykonane operacje (Aktywacja/Deaktywacja).

Zobacz jak

SamochodAktywacjaZmiany – Zdefiniowanie Pól

Do SamochodAktywacjaZmiany dodajemy następujące pola:

// W tym miejscu będziemy definiować pola klasy (properties).
// ...
private samochod _Samochod;
        [Association("samochod-samochodaktywacja")] // <- Referencja do Samochod.cs (One-To-Many)
        public samochod Samochod
        {
            get { return _Samochod; }
            set { SetPropertyValue("Samochod", ref _Samochod, value); }
        }

        private DateTime _Data;
        [ReadOnly(true)]
        public DateTime Data
        {
            get { return _Data; }
            set { SetPropertyValue("Data", ref _Data, value); }
        }

        private string _Operacja;
        public string Operacja
        {
            get { return _Operacja; }
            set { SetPropertyValue("Operacja", ref _Operacja, value); }
        }
// ...

Aby to wszystko funkcjonowało musimy także stworzyć nowe pola w encji Samochod.cs oraz zdefiniować relację One-To-Many. (relacje musimy zdefiniować w obu encjach)

Zobacz jak:

Do już istniejącej encji Samochod.cs dodajemy pola: Aktywny(boolean – bedzie przyjmować wartość true/false, czyli aktywny/nieaktywny) oraz AktywacjaZmiany(kolekcja)

// W tym miejscu będziemy definiować pola klasy (properties).
// ...
private bool _Aktywny;
        public bool Aktywny
        {
            get { return _Aktywny; }
            set { SetPropertyValue("Aktywny", ref _Aktywny, value); }
        }

[Association("samochod-samochodaktywacja"), DevExpress.Xpo.Aggregated] // <- Relacja One-To-Many z SamochodAktywacjaZmiany
        public XPCollection<SamochodAktywacjaZmiany> SamochodAktywacjaZmiany
        {
            get { return GetCollection<SamochodAktywacjaZmiany>("SamochodAktywacjaZmiany"); }
        }
// ...

Dodanie Akcji

Jeżeli zrobiliśmy wszystkie kroki powyżej poprawnie to możemy przejść do zdefiniowania akcji, stworzymy teraz akcje aktywacji i akcje deaktywacji samochodu. Zrobimy to za pomocą kodu w encji Samochod.cs

// W tym miejscu będziemy definiować pola klasy (properties).
// ...
[Action(Caption = "Aktywacja", ConfirmationMessage = "Are you sure?", ImageName = "Attention", AutoCommit = false)]
        public void Aktywacja()
        {
            this.Aktywny = true;
            SamochodAktywacjaZmiany samochodAktywacjaZmiany = new SamochodAktywacjaZmiany(Session);
            samochodAktywacjaZmiany.Samochod = this;
            samochodAktywacjaZmiany.Data = DateTime.Today;
            samochodAktywacjaZmiany.Operacja = "Aktywacja";
            samochodAktywacjaZmiany.Save();
        }

        [Action(Caption = "Deaktywacja", ConfirmationMessage = "Are you sure?", ImageName = "Attention", AutoCommit = true)]
        public void Deaktywacja()
        {
            this.Aktywny = false;
            SamochodAktywacjaZmiany samochodAktywacjaZmiany = new SamochodAktywacjaZmiany(Session);
            samochodAktywacjaZmiany.Samochod = this;
            samochodAktywacjaZmiany.Data = DateTime.Today;
            samochodAktywacjaZmiany.Operacja = "Deaktywacja";
            samochodAktywacjaZmiany.Save();
        }
// ...

Dodatkowo możemy też wyłączyć guzik (Aktywacja) gdy samochód jest już Aktywny oraz wyłączyć guzik (Deaktywacja) gdy samochód jest już nieaktywny. Można zrobić to za pomocą zasad wyglądu (AppearanceRules):

// namespace Ingenes.ExpressApp.Samochody.BusinessObjects
// ...
[Appearance("WylaczAktywacje", AppearanceItemType = "Action", TargetItems = "samochod.Aktywacja", Criteria = "[Aktywny] = True", Context = "Any", Enabled = false)]
[Appearance("WylaczDeaktywacje", AppearanceItemType = "Action", TargetItems = "samochod.Deaktywacja", Criteria = "[Aktywny] = False", Context = "Any", Enabled = false)]
// ...
// public class samochod : BaseObject

Efekt:

Za pomocą akcji Deaktywacji możemy wyłączyć wybrany samochód z użytku, namiast za pomocą Aktywacji możemy przywrócić samochód do użytku.

Następny Artykuł: Interfejs IKanban