Ejemplo n.º 1
0
 /// <summary>
 /// Danner ViewModel for en adressekonto.
 /// </summary>
 /// <param name="regnskabViewModel">ViewModel for regnskabet, som adressekontoen skal være tilknyttet.</param>
 /// <param name="adressekontoModel">Model for adressekontoen.</param>
 /// <param name="displayName">Navn for ViewModel, som kan benyttes til visning i brugergrænsefladen.</param>
 /// <param name="image">Billede, der illustrerer en adressekontoen.</param>
 /// <param name="finansstyringRepository">Implementering af repository til finansstyring.</param>
 /// <param name="exceptionHandlerViewModel">Implementering af ViewModel for en exceptionhandler.</param>
 public AdressekontoViewModel(IRegnskabViewModel regnskabViewModel, IAdressekontoModel adressekontoModel, string displayName, byte[] image, IFinansstyringRepository finansstyringRepository, IExceptionHandlerViewModel exceptionHandlerViewModel)
 {
     if (regnskabViewModel == null)
     {
         throw new ArgumentNullException("regnskabViewModel");
     }
     if (adressekontoModel == null)
     {
         throw new ArgumentNullException("adressekontoModel");
     }
     if (string.IsNullOrEmpty(displayName))
     {
         throw new ArgumentNullException("displayName");
     }
     if (image == null)
     {
         throw new ArgumentNullException("image");
     }
     if (finansstyringRepository == null)
     {
         throw new ArgumentNullException("finansstyringRepository");
     }
     if (exceptionHandlerViewModel == null)
     {
         throw new ArgumentNullException("exceptionHandlerViewModel");
     }
     _regnskabViewModel = regnskabViewModel;
     _adressekontoModel = adressekontoModel;
     _adressekontoModel.PropertyChanged += PropertyChangedOnAdressekontoModelEventHandler;
     _displayName               = displayName;
     _image                     = image;
     _finansstyringRepository   = finansstyringRepository;
     _exceptionHandlerViewModel = exceptionHandlerViewModel;
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Finder og returnerer elementer med historiske data for en given adressekonto.
        /// </summary>
        /// <param name="localeDataDocument">XML dokument, hvorfra elementer skal returneres.</param>
        /// <param name="adressekontoModel">Model for adressekontoen, hvortil historiske data skal returneres.</param>
        /// <returns>Elementer indeholdende historiske data til den givne adressekonto.</returns>
        public static IEnumerable <XElement> GetHistorikElements(this XDocument localeDataDocument, IAdressekontoModel adressekontoModel)
        {
            if (localeDataDocument == null)
            {
                throw new ArgumentNullException("localeDataDocument");
            }
            if (adressekontoModel == null)
            {
                throw new ArgumentNullException("adressekontoModel");
            }
            var regnskabElement = localeDataDocument.GetRegnskabElement(adressekontoModel.Regnskabsnummer);

            if (regnskabElement == null)
            {
                return(new List <XElement>(0));
            }
            var historikElements   = regnskabElement.Elements(XName.Get("AdressekontoHistorik", regnskabElement.Name.NamespaceName)).Where(m => m.Attribute(XName.Get("nummer", string.Empty)) != null && string.Compare(m.Attribute(XName.Get("nummer", string.Empty)).Value, adressekontoModel.Nummer.ToString(CultureInfo.InvariantCulture), StringComparison.Ordinal) == 0 && m.Attribute(XName.Get("dato", string.Empty)) != null && string.Compare(m.Attribute(XName.Get("dato", string.Empty)).Value, GetHistorikDato(adressekontoModel.StatusDato), StringComparison.Ordinal) <= 0).ToList();
            var removeElementUntil = DateTime.Today.AddYears(-2).AddMonths(-1);

            removeElementUntil = removeElementUntil.AddDays((removeElementUntil.Day) * -1);
            var elementToDelete = historikElements.FirstOrDefault(m => string.Compare(m.Attribute(XName.Get("dato", string.Empty)).Value, GetHistorikDato(removeElementUntil), StringComparison.Ordinal) <= 0);

            while (elementToDelete != null)
            {
                elementToDelete.Remove();
                historikElements.Remove(elementToDelete);
                elementToDelete = historikElements.FirstOrDefault(m => string.Compare(m.Attribute(XName.Get("dato", string.Empty)).Value, GetHistorikDato(removeElementUntil), StringComparison.Ordinal) <= 0);
            }
            return(historikElements.OrderByDescending(m => m.Attribute(XName.Get("dato", string.Empty)).Value).ToList());
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Gemmer data for en adressekonto i det lokale datalager.
        /// </summary>
        /// <param name="adressekontoModel">Model for adressekontoen.</param>
        /// <param name="localeDataDocument">XML dokument, hvori data skal gemmes.</param>
        public static void StoreInDocument(this IAdressekontoModel adressekontoModel, XDocument localeDataDocument)
        {
            if (adressekontoModel == null)
            {
                throw new ArgumentNullException("adressekontoModel");
            }
            if (localeDataDocument == null)
            {
                throw new ArgumentNullException("localeDataDocument");
            }
            var regnskabElement = localeDataDocument.GetRegnskabElement(adressekontoModel.Regnskabsnummer);

            if (regnskabElement == null)
            {
                return;
            }
            XElement adressekontoHistorikElement;
            var      adressekontoElement = regnskabElement.Elements(XName.Get("Adressekonto", regnskabElement.Name.NamespaceName)).SingleOrDefault(m => m.Attribute(XName.Get("nummer", string.Empty)) != null && string.Compare(m.Attribute(XName.Get("nummer", string.Empty)).Value, adressekontoModel.Nummer.ToString(CultureInfo.InvariantCulture), StringComparison.Ordinal) == 0);

            if (adressekontoElement == null)
            {
                adressekontoElement = new XElement(XName.Get("Adressekonto", regnskabElement.Name.NamespaceName));
                adressekontoElement.UpdateAttribute(XName.Get("nummer", string.Empty), adressekontoModel.Nummer.ToString(CultureInfo.InvariantCulture));
                adressekontoElement.UpdateAttribute(XName.Get("navn", string.Empty), adressekontoModel.Navn);
                adressekontoElement.UpdateAttribute(XName.Get("primaerTelefon", string.Empty), adressekontoModel.PrimærTelefon, false);
                adressekontoElement.UpdateAttribute(XName.Get("sekundaerTelefon", string.Empty), adressekontoModel.SekundærTelefon, false);
                regnskabElement.Add(adressekontoElement);

                adressekontoHistorikElement = new XElement(XName.Get("AdressekontoHistorik", regnskabElement.Name.NamespaceName));
                adressekontoHistorikElement.UpdateAttribute(XName.Get("nummer", string.Empty), adressekontoModel.Nummer.ToString(CultureInfo.InvariantCulture));
                adressekontoHistorikElement.UpdateAttribute(XName.Get("dato", string.Empty), GetHistorikDato(adressekontoModel.StatusDato));
                adressekontoHistorikElement.UpdateAttribute(XName.Get("saldo", string.Empty), adressekontoModel.Saldo.ToString(CurrencyFormat, CultureInfo.InvariantCulture));
                regnskabElement.Add(adressekontoHistorikElement);
                return;
            }
            adressekontoElement.UpdateAttribute(XName.Get("navn", string.Empty), adressekontoModel.Navn);
            adressekontoElement.UpdateAttribute(XName.Get("primaerTelefon", string.Empty), adressekontoModel.PrimærTelefon, false);
            adressekontoElement.UpdateAttribute(XName.Get("sekundaerTelefon", string.Empty), adressekontoModel.SekundærTelefon, false);

            var adressekontoHistorikDato = GetHistorikDato(adressekontoModel.StatusDato);

            adressekontoHistorikElement = localeDataDocument.GetHistorikElements(adressekontoModel).FirstOrDefault(m => string.Compare(m.Attribute(XName.Get("dato", string.Empty)).Value, adressekontoHistorikDato, StringComparison.Ordinal) == 0);
            if (adressekontoHistorikElement == null)
            {
                var makeHistoric = true;
                adressekontoHistorikElement = localeDataDocument.GetHistorikElements(adressekontoModel).FirstOrDefault(m => string.Compare(m.Attribute(XName.Get("dato", string.Empty)).Value, adressekontoHistorikDato, StringComparison.Ordinal) < 0);
                if (adressekontoHistorikElement != null)
                {
                    var prevSaldo = decimal.Parse(adressekontoHistorikElement.Attribute(XName.Get("saldo", string.Empty)).Value, NumberStyles.Any, CultureInfo.InvariantCulture);
                    makeHistoric = adressekontoModel.Saldo != prevSaldo;
                }
                if (!makeHistoric)
                {
                    return;
                }
                adressekontoHistorikElement = new XElement(XName.Get("AdressekontoHistorik", regnskabElement.Name.NamespaceName));
                adressekontoHistorikElement.UpdateAttribute(XName.Get("nummer", string.Empty), adressekontoModel.Nummer.ToString(CultureInfo.InvariantCulture));
                adressekontoHistorikElement.UpdateAttribute(XName.Get("dato", string.Empty), adressekontoHistorikDato);
                adressekontoHistorikElement.UpdateAttribute(XName.Get("saldo", string.Empty), adressekontoModel.Saldo.ToString(CurrencyFormat, CultureInfo.InvariantCulture));
                regnskabElement.Add(adressekontoHistorikElement);
                return;
            }
            adressekontoHistorikElement.UpdateAttribute(XName.Get("saldo", string.Empty), adressekontoModel.Saldo.ToString(CurrencyFormat, CultureInfo.InvariantCulture));
        }
 /// <summary>
 /// Opdaterer ViewModel for adressekontoen.
 /// </summary>
 /// <param name="adressekontoViewModel">ViewModel for adressenkontoen, der skal opdateres.</param>
 /// <param name="adressekontoModel">Model for adressekontoen, som ViewModel for adressekontoen skal opdateres med.</param>
 /// <param name="argument">Argument, der benyttes til opdatering af ViewModel for adressekontoen.</param>
 private static void HandleResult(IAdressekontoViewModel adressekontoViewModel, IAdressekontoModel adressekontoModel, object argument)
 {
     if (adressekontoViewModel == null)
     {
         throw new ArgumentNullException("adressekontoViewModel");
     }
     if (adressekontoModel == null)
     {
         throw new ArgumentNullException("adressekontoModel");
     }
     if (argument == null)
     {
         throw new ArgumentNullException("argument");
     }
     adressekontoViewModel.Navn            = adressekontoModel.Navn;
     adressekontoViewModel.PrimærTelefon   = adressekontoModel.PrimærTelefon;
     adressekontoViewModel.SekundærTelefon = adressekontoModel.SekundærTelefon;
     adressekontoViewModel.StatusDato      = adressekontoModel.StatusDato;
     adressekontoViewModel.Saldo           = adressekontoModel.Saldo;
 }