Ejemplo n.º 1
0
        private string Synkroniser_TestResultat_ReturnerNotater(
            int arkID,
            RegnskabsmedlemDTO regnskabsmedlem,
            LoggingManagerUnitTest loggingManager,
            bool medlemOgRegnskabsmeldemNavnSkalVaereEns,
            bool kendtRegnskabsmedlemOgRegnskabsmedlemNavnSkalVaereEns,
            MedlemsstatusEnum?medlemstatusHvisForskelligFraRegnskabsmedlemstatus = null)
        {
            loggingManager.Clear();
            (new MedlemmerManager()).SynkroniserRegnskabsmedlemmerOgMedlemmer(false);

            string notater = KomponentManager.LoggingManager.ToString();

            Assert.IsTrue(!String.IsNullOrEmpty(notater), notater);

            using (ArkDatabase db = new ArkDatabase())
            {
                Medlem          medlem = db.Medlems.First(medlemItem => medlemItem.ArkID == arkID);
                Regnskabsmedlem kendtRegnskabsmedlem = db.Regnskabsmedlems.First(medlemItem => medlemItem.ArkID == arkID);

                if (medlemstatusHvisForskelligFraRegnskabsmedlemstatus.HasValue)
                {
                    Assert.AreEqual(medlemstatusHvisForskelligFraRegnskabsmedlemstatus.Value, medlem.Status);
                }
                else
                {
                    Assert.AreEqual(regnskabsmedlem.Status, medlem.Status);
                }

                if (medlemOgRegnskabsmeldemNavnSkalVaereEns)
                {
                    Assert.AreEqual(regnskabsmedlem.Navn, medlem.Navn);
                }
                else
                {
                    Assert.AreNotEqual(regnskabsmedlem.Navn, medlem.Navn);
                }

                Assert.AreEqual(regnskabsmedlem.Status, kendtRegnskabsmedlem.Status);
                if (kendtRegnskabsmedlemOgRegnskabsmedlemNavnSkalVaereEns)
                {
                    Assert.AreEqual(regnskabsmedlem.Navn, kendtRegnskabsmedlem.Navn);
                }
                else
                {
                    Assert.AreNotEqual(regnskabsmedlem.Navn, kendtRegnskabsmedlem.Navn);
                }
            }
            return(notater);
        }
Ejemplo n.º 2
0
 internal static bool HarRegnskabsmedlemOgKendtRegnskabsmedlemSammeData(RegnskabsmedlemDTO regnskabsmedlem, Regnskabsmedlem kendtRegnskabsmedlem)
 {
     return
         (regnskabsmedlem.Adresse == kendtRegnskabsmedlem.Adresse &&
          regnskabsmedlem.AdresseBy == kendtRegnskabsmedlem.AdresseBy &&
          regnskabsmedlem.AdressePostNummer == kendtRegnskabsmedlem.AdressePostNummer &&
          regnskabsmedlem.ArkID == kendtRegnskabsmedlem.ArkID &&
          regnskabsmedlem.EMailAdresse == kendtRegnskabsmedlem.EMailAdresse &&
          regnskabsmedlem.Foedselsdato == kendtRegnskabsmedlem.Foedselsdato &&
          regnskabsmedlem.Koen == kendtRegnskabsmedlem.Koen &&
          regnskabsmedlem.MobilNummer == kendtRegnskabsmedlem.MobilNummer &&
          regnskabsmedlem.Navn == kendtRegnskabsmedlem.Navn &&
          regnskabsmedlem.Status == kendtRegnskabsmedlem.Status);
 }
Ejemplo n.º 3
0
 internal static void OverskrivMedRegnskabsmedlemsdata(RegnskabsmedlemDTO regnskabsmedlem, Regnskabsmedlem kendtRegnskabsmedlem)
 {
     kendtRegnskabsmedlem.Adresse           = regnskabsmedlem.Adresse;
     kendtRegnskabsmedlem.AdresseBy         = regnskabsmedlem.AdresseBy;
     kendtRegnskabsmedlem.AdressePostNummer = regnskabsmedlem.AdressePostNummer;
     kendtRegnskabsmedlem.ArkID             = regnskabsmedlem.ArkID;
     kendtRegnskabsmedlem.EMailAdresse      = regnskabsmedlem.EMailAdresse;
     kendtRegnskabsmedlem.Foedselsdato      = regnskabsmedlem.Foedselsdato;
     kendtRegnskabsmedlem.Koen        = regnskabsmedlem.Koen;
     kendtRegnskabsmedlem.MobilNummer = regnskabsmedlem.MobilNummer;
     kendtRegnskabsmedlem.Navn        = regnskabsmedlem.Navn;
     kendtRegnskabsmedlem.Status      = regnskabsmedlem.Status;
 }
Ejemplo n.º 4
0
        public void SynkroniserRegnskabsmedlemmerOgMedlemmer(bool validerLaesteRegnskabsmedlemmer = true)
        {
            StringBuilder logBeskedBygger = new StringBuilder();

            //¤¤¤ Tegnforklaring
            //¤¤¤ Tekst som står efter '//¤¤¤' er en kommentar
            //¤¤¤ Tekst som står efter '//' skal konverteres til kode

            //¤¤¤ Tre entiteter er vigtige i denne sammenhæng:
            //¤¤¤ Regnskabsmedlem: Læst direkte i regnskabssystemet
            //¤¤¤ KendtRegnskabsmedlem: Persisteret data fra siste gang regnskabssystemet leverede et opdateret Regnskabsmedlem
            //¤¤¤ Medlem: Brugeren (aktiveret eller ej) af websitet.
            //¤¤¤
            //¤¤¤ Disse tre entiteter har datafelter til fælles som defineret i ARK.Website.Common.RegnskabsmedlemDTO
            //¤¤¤ At to entiteter er ens betyder at datafelterne alle har samme værdi

            //¤¤¤ Status er vigtig i denne sammenhæng (ARK.Website.Common.Enum.MedlemsstatusEnum)
            //¤¤¤ Værdi IkkeAktiveret: Bruger som kan tilgå logbog og kan ses på websitet, men som aldrig har været logget på websitet
            //¤¤¤ Værdi Aktiv: Bruger som kan tilgå logbog og website
            //¤¤¤ Værdi Inaktiv: Bruger som kan tilgå website men ikke skrive til logbog (kan ikke få lov at ro/padle)
            //¤¤¤ Værdi Gammel: Bruger som kan tilgå hverken website eller logbog, men som stadig figurerer i rostatistik og website historik

            List <RegnskabsmedlemDTO> regnskabsmedlemmer = new List <RegnskabsmedlemDTO>();

            try
            {
                regnskabsmedlemmer = KomponentManager.RegnskabsmedlemsManager.HentRegnskabsmedlemmer();
            }
            catch (Exception exception)
            {
                logBeskedBygger.AppendLine("Læsning af regnskabsmedlemmer fejlede: " + exception.ToString() + Environment.NewLine);
            }

            //¤¤¤ Valider regnskabsmedlemmer så forfejlede retursvar ikke fortsætter. Kunne eksempelvis være antallet af læste aktive regnskabsmedlemmer
            int  antalAktiveRegnskabsmedlemmer     = regnskabsmedlemmer.Count(medlemsItem => medlemsItem.Status == Common.Enum.MedlemsstatusEnum.Aktiv);
            bool erRegnskabsmedlemmerLaesningValid = true;

            if (validerLaesteRegnskabsmedlemmer)
            {
                ErRegnskabsmedlemmerLaesningValid(regnskabsmedlemmer);
            }
            logBeskedBygger.AppendLine("Regnskabsmedlemmer læst: [Valid læsning:" + erRegnskabsmedlemmerLaesningValid + ";Antal:" + regnskabsmedlemmer.Count + ";Medlemsstatus-Aktiv:" + antalAktiveRegnskabsmedlemmer + "]" + Environment.NewLine);

            StringBuilder opdateretMedlemsbesked = new StringBuilder();

            if (erRegnskabsmedlemmerLaesningValid)
            {
                using (ARK.Website.EntityFramework.Main.ArkDatabase db = new EntityFramework.Main.ArkDatabase())
                {
                    List <Medlem>          medlemmer = db.Medlems.ToList();
                    List <Regnskabsmedlem> kendteRegnskabsmedlemmer = db.Regnskabsmedlems.ToList();

                    foreach (RegnskabsmedlemDTO regnskabsmedlem in regnskabsmedlemmer)
                    {
                        bool erOpdateret = false;
                        opdateretMedlemsbesked.Clear();
                        int arkID = regnskabsmedlem.ArkID;
                        opdateretMedlemsbesked.AppendLine("Regnskabsmedlem ArkID = " + arkID);
                        try
                        {
                            Regnskabsmedlem kendtRegnskabsmedlem = kendteRegnskabsmedlemmer.FirstOrDefault(regnskabsmedlemItem => regnskabsmedlemItem.ArkID == arkID);
                            Medlem          medlem = medlemmer.FirstOrDefault(medlemItem => medlemItem.ArkID == arkID);

                            if (medlem == null || kendtRegnskabsmedlem == null)
                            {
                                if (medlem != null || kendtRegnskabsmedlem != null)
                                {
                                    throw new Exception("Fejl i modellen [ArkID=" + arkID + "]: Medlem = " + (medlem == null ? "Null" : "Not Null") + "; KendtRegnskabsmedlem = " + (kendtRegnskabsmedlem == null ? "Null" : "Not Null"));
                                }
                            }

                            if (medlem != null)
                            {
                                //¤¤¤ Endnu ikke aktiverede medlemmer holdes synkrone med regnskabssystemet
                                //¤¤¤ Gamle medlemmer, som kommmer tilbage i systemet, bliver behandlet som nye

                                MedlemsstatusEnum oprindeligMedlemsstatus = medlem.Status;
                                MedlemsstatusEnum oprindeligKendtRegnskabsmedlemsstatus = kendtRegnskabsmedlem.Status;
                                bool medlemsdataOverskrevet = false;
                                bool kendtRegnskabsmedlemsdataOverskrevet = false;
                                bool regnskabsmedlemDataEns = HarRegnskabsmedlemOgKendtRegnskabsmedlemSammeData(regnskabsmedlem, kendtRegnskabsmedlem);
                                if (!regnskabsmedlemDataEns)
                                {
                                    #region Opdatering af eksisterende Medlem og KendtRegnskabsmedlem data
                                    switch (regnskabsmedlem.Status)
                                    {
                                    case MedlemsstatusEnum.Aktiv:
                                    {
                                        switch (oprindeligMedlemsstatus)
                                        {
                                        case MedlemsstatusEnum.Aktiv:
                                        {
                                            //Håndteret af bruger logon
                                        } break;

                                        case MedlemsstatusEnum.Inaktiv:
                                        {
                                            //Status i Regnskabsmedlem - tabellen skal opdateres
                                            //Resten af ændringer i regnskabsmedlemsdata skal håndteres af bruger logon
                                            kendtRegnskabsmedlem.Status = regnskabsmedlem.Status;
                                            medlem.Status = regnskabsmedlem.Status;
                                        } break;

                                        case MedlemsstatusEnum.IkkeAktiveret:
                                        case MedlemsstatusEnum.Gammel:
                                        {
                                            OverskrivMedRegnskabsmedlemsdata(regnskabsmedlem, kendtRegnskabsmedlem);
                                            OverskrivMedRegnskabsmedlemsdata(regnskabsmedlem, medlem);
                                            medlem.Status = MedlemsstatusEnum.IkkeAktiveret;

                                            medlemsdataOverskrevet = true;
                                            kendtRegnskabsmedlemsdataOverskrevet = true;
                                        } break;

                                        default:
                                        {
                                            throw new NotSupportedException("Medlem.Status = " + oprindeligMedlemsstatus);
                                        }
                                        }
                                    } break;

                                    case MedlemsstatusEnum.Inaktiv:
                                    {
                                        switch (oprindeligMedlemsstatus)
                                        {
                                        case MedlemsstatusEnum.Inaktiv:
                                        {
                                            //Håndteret af bruger logon
                                        } break;

                                        case MedlemsstatusEnum.Aktiv:
                                        {
                                            //Status i Regnskabsmedlem - tabellen skal opdateres
                                            //Resten af ændringer i regnskabsmedlemsdata skal håndteres af bruger logon
                                            kendtRegnskabsmedlem.Status = regnskabsmedlem.Status;
                                            medlem.Status = regnskabsmedlem.Status;
                                        } break;

                                        case MedlemsstatusEnum.IkkeAktiveret:
                                        case MedlemsstatusEnum.Gammel:
                                        {
                                            OverskrivMedRegnskabsmedlemsdata(regnskabsmedlem, kendtRegnskabsmedlem);
                                            OverskrivMedRegnskabsmedlemsdata(regnskabsmedlem, medlem);
                                            medlem.Status = MedlemsstatusEnum.IkkeAktiveret;

                                            medlemsdataOverskrevet = true;
                                            kendtRegnskabsmedlemsdataOverskrevet = true;
                                        } break;

                                        default:
                                        {
                                            throw new NotSupportedException("Medlem.Status = " + oprindeligMedlemsstatus);
                                        }
                                        }
                                    } break;

                                    case MedlemsstatusEnum.Gammel:
                                    {
                                        switch (oprindeligMedlemsstatus)
                                        {
                                        case MedlemsstatusEnum.IkkeAktiveret:
                                        {
                                            OverskrivMedRegnskabsmedlemsdata(regnskabsmedlem, kendtRegnskabsmedlem);
                                            OverskrivMedRegnskabsmedlemsdata(regnskabsmedlem, medlem);

                                            medlemsdataOverskrevet = true;
                                            kendtRegnskabsmedlemsdataOverskrevet = true;
                                        } break;

                                        case MedlemsstatusEnum.Aktiv:
                                        case MedlemsstatusEnum.Inaktiv:
                                        case MedlemsstatusEnum.Gammel:
                                        {
                                            OverskrivMedRegnskabsmedlemsdata(regnskabsmedlem, kendtRegnskabsmedlem);
                                            medlem.Status = regnskabsmedlem.Status;

                                            kendtRegnskabsmedlemsdataOverskrevet = true;
                                        } break;

                                        default:
                                        {
                                            throw new NotSupportedException("Medlem.Status = " + oprindeligMedlemsstatus);
                                        }
                                        }
                                    } break;

                                    default:
                                    {
                                        throw new NotSupportedException("Regnskabsmedlem.Status = " + regnskabsmedlem.Status);
                                    }
                                    }
                                    #endregion
                                }

                                #region Logbesked generering
                                if (medlemsdataOverskrevet)
                                {
                                    opdateretMedlemsbesked.AppendLine("EKSISTERENDE MEDLEM OVERSKREVET FRA REGNSKABSSYSTEMET");
                                    erOpdateret = true;
                                }

                                if (medlem.Status != oprindeligMedlemsstatus)
                                {
                                    opdateretMedlemsbesked.AppendLine("MEDLEMSSTATUS ÆNDRET " + oprindeligMedlemsstatus + "=>" + medlem.Status);
                                    erOpdateret = true;
                                }

                                if (kendtRegnskabsmedlemsdataOverskrevet)
                                {
                                    opdateretMedlemsbesked.AppendLine("KENDT REGNSKABSMEDLEM OVERSKREVET FRA REGNSKABSSYSTEMET");
                                    erOpdateret = true;
                                }


                                if (kendtRegnskabsmedlem.Status != oprindeligKendtRegnskabsmedlemsstatus &&
                                    !kendtRegnskabsmedlemsdataOverskrevet)
                                {
                                    opdateretMedlemsbesked.AppendLine("KENDT REGNSKABSMEDLEM STATUS ÆNDRET " + oprindeligKendtRegnskabsmedlemsstatus + "=>" + kendtRegnskabsmedlem.Status);
                                    erOpdateret = true;
                                }
                                #endregion
                            }
                            else
                            {
                                #region Oprettelse af nyt Medlem og tilhørende KendtRegnskabsmedlem
                                medlem             = new Medlem();
                                medlem.Rostatistik = new Rostatistik();
                                db.Medlems.Add(medlem);

                                kendtRegnskabsmedlem = new Regnskabsmedlem();
                                db.Regnskabsmedlems.Add(kendtRegnskabsmedlem);

                                OverskrivMedRegnskabsmedlemsdata(regnskabsmedlem, medlem);
                                OverskrivMedRegnskabsmedlemsdata(regnskabsmedlem, kendtRegnskabsmedlem);

                                if (regnskabsmedlem.Status != MedlemsstatusEnum.Gammel)
                                {
                                    medlem.Status = MedlemsstatusEnum.IkkeAktiveret;
                                }
                                else
                                {
                                    medlem.Status = MedlemsstatusEnum.Gammel;
                                }
                                #endregion

                                erOpdateret = true;
                                opdateretMedlemsbesked.AppendLine("NYT MEDLEM - STATUS = " + medlem.Status);
                            }

                            if (erOpdateret)
                            {
                                logBeskedBygger.AppendLine(opdateretMedlemsbesked.ToString());
                            }
                            db.SaveChanges();
                        }
                        catch (Exception exception)
                        {
                            logBeskedBygger.AppendLine("Fejl under kørsel af medlem ArkID = " + arkID + Environment.NewLine + exception.ToString() + Environment.NewLine);
                        }
                    }

                    try
                    {
                        //¤¤¤ de medlemmer som ikke længere får returneret et tilhørende regnskabsmedlem overgår til status gammel.
                        foreach (Medlem medlem in medlemmer.Where(medlemItem => medlemItem.Status != MedlemsstatusEnum.Gammel))
                        {
                            int arkID = medlem.ArkID;
                            RegnskabsmedlemDTO regnskabsmedlem = regnskabsmedlemmer.FirstOrDefault(regnskabsmedlemItem => regnskabsmedlemItem.ArkID == arkID);
                            if (regnskabsmedlem == null)
                            {
                                MedlemsstatusEnum oprindeligMedlemsstatus = medlem.Status;
                                medlem.Status = MedlemsstatusEnum.Gammel;
                                opdateretMedlemsbesked.AppendLine("Regnskabsmedlem ArkID = " + arkID);
                                opdateretMedlemsbesked.AppendLine("Regnskabsmedlem ikke eksisterende");
                                opdateretMedlemsbesked.AppendLine("MEDLEMSSTATUS ÆNDRET " + oprindeligMedlemsstatus + "=>" + medlem.Status);
                            }
                        }
                        db.SaveChanges();
                    }
                    catch (Exception exception)
                    {
                        logBeskedBygger.AppendLine("Fejl ved ændring af medlemmer status Gammel ved manglende regnskabsmedlem" + Environment.NewLine + exception.ToString() + Environment.NewLine);
                    }
                }
            }

            KomponentManager.LoggingManager.LogBesked(SYNKRONISERING_REGNSKAB_OG_MEDLEMMER_NOEGLEORD, logBeskedBygger.ToString());
        }