Skocz do zawartości

Sfera Kalendarz Cykle

Polecane posty

Przepraszam za spam. Ten sam post wysłałem z innego konta ?

Zadanie: stworzenie w Sferze indywidualnego miesięcznego kalendarza czyli planu pracy.

W Gratyfikancie NEXO jest to  obecnie możliwe. Spróbowałem zrobić to w Sferze. Skorzystałem z podpowiedzi zawartej w dokumentacji przy Interfejsie obiektu biznesowego Kalendarz, cytuję:

InsERT.Moria.Kadry.Duze.IKalendarze mgr = sfera.PodajObiektTypu<InsERT.Moria.Kadry.Duze.IKalendarze>();

using (var bo = mgr.Utworz())

{

    // Tu należy umieścić kod wypełniający obiekt poprawnymi danymi.

    // Główna encja jest dostępna poprzez właściwość bo.Dane

 

Zaciąłem się przy tworzeniu Cyklu.

Klasa Kalendarz odwołuje się do kolekcji  ICollection< CyklKalendarza>

CyklKalendarza powstaje przy współpracy konstruktorów klas DzienKalendarza i DzienCyklu.

Musi tak być, bo relacja CyklKalendarza do DzieńKalendarza byłaby typu wiele do wielu i konieczna jest tabela pośrednicząca DzieńCyklu. Znane mi są elementy tych trzech tabel, ale niestety nie wiem jak zrobić z tego kolekcję i przyporządkować polu Kalendarz.Cykle.

Czy któryś z kolegów ma może doświadczenie w podanym temacie?

Link to postu

Poniżej przykład utworzenia nowego planu pracy:

public void DodaniePlanuPracy()
        {
            using ( var sfera = UruchomSfere() )
            {
                IKalendarze kalendarze = sfera.PodajObiektTypu<IKalendarze>();
                ISystemyRozliczaniaCzasuPracy systemyRozliczaniaCzasuPracy = sfera.PodajObiektTypu<ISystemyRozliczaniaCzasuPracy>();

                using ( var kalendarzBO = kalendarze.Utworz() )
                {
                    var systemRozliczaniaCzasuPracy = systemyRozliczaniaCzasuPracy.Dane.Wszystkie().FirstOrDefault(x => x.Domyslny);
                    kalendarzBO.Dane.SystemRozliczaniaCzasuPracy = systemRozliczaniaCzasuPracy;
                    kalendarzBO.Dane.Nazwa = "Mój kalendarz";

                    var cykl = new CyklKalendarza();
                    kalendarzBO.Dane.Cykle.Add(cykl);

                    cykl.ObowiazujeOd    = DateTime.Now.Date.PoczatekTygodnia();
                    cykl.WyjatkiUstawowe = true;

                    DzienCyklu dzienCyklu = null;

                    //wpisanie 5 dni roboczych cyklu
                    for ( int i = 0; i < 5; i++ )
                    {
                        dzienCyklu = new DzienCyklu();
                        cykl.Dni.Add(dzienCyklu);

                        dzienCyklu.Lp = i;
                        dzienCyklu.TypDnia = (byte)TypDnia.Roboczy;
                        //po podaniu typu dnia jako roboczy liczba godzin do przepracowania ustawi się automatycznie na liczbę zgodną z wymiarem dobowego pełnego zatrudnienia
                        //ale można ją ustawić samodzielnie
                        dzienCyklu.DoPrzepracowania = new CzasTrwaniaWymagany() { Ticks = new TimeSpan(8, 0, 0).Ticks };
                        dzienCyklu.DoPrzepracowaniaNocne = new CzasTrwaniaWymagany() { Ticks = new TimeSpan(0, 0, 0).Ticks };
                        dzienCyklu.Opis = "";
                    }

                    //wpisanie wolnej soboty
                    dzienCyklu = new DzienCyklu();
                    cykl.Dni.Add(dzienCyklu);
                    dzienCyklu.Lp = 6;
                    dzienCyklu.TypDnia = (byte)TypDnia.Wolny;

                    //wpisanie niedzieli
                    dzienCyklu = new DzienCyklu();
                    cykl.Dni.Add(dzienCyklu);
                    dzienCyklu.Lp = 6;
                    dzienCyklu.TypDnia = (byte)TypDnia.Wolny;

                    if ( !kalendarzBO.Zapisz() )
                        kalendarzBO.WypiszBledy();
                }
            }
        }

Pozdrawiam
Krzysztof Wesoły

 

 

Link to postu
×
×
  • Dodaj nową pozycję...