Esempio n. 1
0
        public void AssignImage2EinnahmeAusgabe(long imageId, EinnahmeAusgabe einnahmeAusgabe)
        {
            try
            {
                var image = _Context.EinnahmeAusgabeBilder.Where(b => b.Id == imageId).FirstOrDefault();

                if (image == null)
                {
                    new Exception("Bild wurde nicht in der Datenbank gefunden!");
                }

                //Falls Bild schon an FinanceEIntrag angehangen wurde brauch es nicht noch einmal angehangen werden
                if (image.Finance != null && image.Finance.Id == einnahmeAusgabe.Id)
                {
                    return;
                }

                image.Finance = einnahmeAusgabe;

                _Context.EinnahmeAusgabeBilder.Update(image);
                _Context.SaveChanges();
            }
            catch (Exception ex)
            {
                //TODO Fehler loggen
                throw ex;
            }
        }
Esempio n. 2
0
        public IActionResult UpdateEinnahmeAusgabe([FromBody] EinnahmeAusgabeViewModel existingEinnahmeAusgabeViewModel)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    EinnahmeAusgabe updateEinnahmeAusgabe = _Mapper.Map <EinnahmeAusgabeViewModel, EinnahmeAusgabe>(existingEinnahmeAusgabeViewModel);

                    updateEinnahmeAusgabe = _EinnahmeAusgabenRepository.UpdateEinnahmeAusgabe(updateEinnahmeAusgabe);

                    //Tagliste aktualisieren, falls sie sich geändert hat
                    var tagListe = _Mapper.Map <IList <TagViewModel>, IList <Tag> >(existingEinnahmeAusgabeViewModel.ListTags);
                    _TagsRepository.UpdateTagListeEinnahmeAusgabe(updateEinnahmeAusgabe, tagListe);

                    //neu hochgeladene Bilder anhängen
                    foreach (var imgId in existingEinnahmeAusgabeViewModel.ListImages.Select(i => i.ImageId))
                    {
                        _ImageRepository.AssignImage2EinnahmeAusgabe(imgId, updateEinnahmeAusgabe);
                    }

                    return(Ok());
                }
                else
                {
                    return(BadRequest(ModelState));
                }
            }
            catch (Exception ex)
            {
                return(BadRequest($"Eintrag konnte nicht aktualisiert werden! Fehler: {ex.Message}"));
            }
        }
Esempio n. 3
0
        public async Task <IActionResult> GetEinnahmeAusgabe(long einnahmeAusgabeId)
        {
            try
            {
                FinanceAppUser loggedInUser = await _UserManager.FindByNameAsync(User.Identity.Name);

                EinnahmeAusgabe einnahmeAusgabe = _EinnahmeAusgabenRepository.GetEinnahmeAusgabeDetail(loggedInUser, einnahmeAusgabeId);

                if (einnahmeAusgabe == null)
                {
                    return(BadRequest("Probleme beim Holen der Daten aus dem Repository"));
                }

                EinnahmeAusgabeViewModel eaVM = _Mapper.Map <EinnahmeAusgabe, EinnahmeAusgabeViewModel>(einnahmeAusgabe);

                //Alle zum Finanzeintrag zugehörigen Bilder anhängen
                IList <FinanceImage> listFinImage = _ImageRepository.GetEinnahmeAusgabeBilder(einnahmeAusgabe, loggedInUser);

                eaVM.ListImages = _Mapper.Map <IList <FinanceImage>, IList <ImageMetaViewModel> >(listFinImage);

                return(Ok(eaVM));
            }
            catch (Exception ex)
            {
                return(BadRequest($"Irgendein Problem welches nicht behandet wurde ist aufgetreten, Fehler: {ex.Message}; {ex.InnerException}"));
            }
        }
Esempio n. 4
0
        public EinnahmeAusgabe UpdateEinnahmeAusgabe(EinnahmeAusgabe neuEinnahmeAusgabe)
        {
            try
            {
                if (neuEinnahmeAusgabe == null)
                {
                    return(neuEinnahmeAusgabe);
                }

                var altEinnahmeAusgabe = _Context.EinnahmenAusgaben.FirstOrDefault(ae => ae.Id == neuEinnahmeAusgabe.Id);

                altEinnahmeAusgabe.Anhaenge            = neuEinnahmeAusgabe.Anhaenge;
                altEinnahmeAusgabe.Benennung           = neuEinnahmeAusgabe.Benennung;
                altEinnahmeAusgabe.BenennungKurz       = neuEinnahmeAusgabe.BenennungKurz;
                altEinnahmeAusgabe.BetragFremdwaehrung = neuEinnahmeAusgabe.BetragFremdwaehrung;
                altEinnahmeAusgabe.BetragHauptwaehrung = neuEinnahmeAusgabe.BetragHauptwaehrung;
                altEinnahmeAusgabe.Buchungsdatum       = neuEinnahmeAusgabe.Buchungsdatum;
                altEinnahmeAusgabe.FremdWaehrung       = neuEinnahmeAusgabe.FremdWaehrung;
                altEinnahmeAusgabe.HauptWaehrung       = neuEinnahmeAusgabe.HauptWaehrung;
                altEinnahmeAusgabe.Wiederkehrend       = neuEinnahmeAusgabe.Wiederkehrend;

                _Context.Update(altEinnahmeAusgabe);

                //aktualisierter Eintrag wird zurückgegeben
                return(_Context.EinnahmenAusgaben.Where(ea => ea.Id == altEinnahmeAusgabe.Id).FirstOrDefault());
            }
            catch (Exception ex)
            {
                //Exception loggen
                throw ex;
            }
        }
Esempio n. 5
0
 public IList <FinanceImage> GetEinnahmeAusgabeBilder(EinnahmeAusgabe einnahmeAusgabe, FinanceAppUser user)
 {
     try
     {
         return(_Context.EinnahmeAusgabeBilder.Where(b => b.Finance == einnahmeAusgabe && b.User == user).ToList());
     }
     catch (Exception ex)
     {
         //TODO Fehler loggen
         throw ex;
     }
 }
Esempio n. 6
0
 public IList <FinanceImage> DeleteImages(EinnahmeAusgabe einnahmeAusgabe)
 {
     try
     {
         return(this.DeleteImages(einnahmeAusgabe.Id));
     }
     catch (Exception ex)
     {
         //Fehler brauch hier nicht geloggt werden, wenn Fehler auftritt wird er in der Methode zuvor geloggt
         throw ex;
     }
 }
Esempio n. 7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="neuEinahmeAusgabe"></param>
        /// <param name="currentUser"></param>
        /// <param name="imageViewModel"></param>
        /// <param name="tagViewModels"></param>
        private EinnahmeAusgabe SaveEinnahmeAusgabeInDB(
            EinnahmeAusgabeViewModel neuEinnahmeAusgabeViewModel,
            FinanceAppUser currentUser,
            DateTime?buchungsDatum = null)
        {
            EinnahmeAusgabe neuEinahmeAusgabe = _Mapper.Map <EinnahmeAusgabeViewModel, EinnahmeAusgabe>(neuEinnahmeAusgabeViewModel);

            neuEinahmeAusgabe.User = currentUser;

            if (buchungsDatum.HasValue)
            {
                if (neuEinahmeAusgabe.Wiederkehrend)
                {
                    neuEinahmeAusgabe.Benennung += $"{Environment.NewLine}{Environment.NewLine}Dies ist ein wiederkehrender Eintrag vom {neuEinahmeAusgabe.Buchungsdatum.ToString("dddd, dd MMMM yyyy")}" +
                                                   $"{Environment.NewLine}aktuelles Buchungsdatum: {buchungsDatum.Value.ToString("dddd, dd MMMM yyyy")}";
                }

                neuEinahmeAusgabe.Buchungsdatum = buchungsDatum.Value;
            }


            EinnahmeAusgabe einnahmeAusgabe = _EinnahmeAusgabenRepository.AddNeueEinnahmeAusgabe(neuEinahmeAusgabe);

            //Verweis EinnahmeAusgabe <> hochgeladenes Bild
            foreach (var imgId in neuEinnahmeAusgabeViewModel.ListImages.Select(i => i.ImageId))
            {
                _ImageRepository.AssignImage2EinnahmeAusgabe(imgId, einnahmeAusgabe);
            }

            //Verweis EinnahmeAusgabe <> Tag
            var tagListe = _Mapper.Map <IList <TagViewModel>, IList <Tag> >(neuEinnahmeAusgabeViewModel.ListTags);

            foreach (var tag in tagListe)
            {
                _TagsRepository.AddTagToEinnahmeAusgabe(einnahmeAusgabe, tag, currentUser);
            }

            return(einnahmeAusgabe);
        }
Esempio n. 8
0
        /// <summary>
        /// Tag an einen Einnahme/Ausgabe anhängen
        /// TODO den User mit übergeben
        /// </summary>
        public void AddTagToEinnahmeAusgabe(EinnahmeAusgabe einnahmeAusgabe, Tag tag, FinanceAppUser user)
        {
            try
            {
                if (einnahmeAusgabe == null || tag == null)
                {
                    throw new NullReferenceException("Einnahme /Ausgabe oder Tag ist null");
                }

                //Verweis erzeugen EinnahmeAusgabe <> Tag
                _Context.EinnahmeAusgabeTags.Add(new EinnahmeAusgabeTag()
                {
                    EinnahmeAusgabeId = einnahmeAusgabe.Id, TagId = tag.Id
                });

                _Context.SaveChanges();
            }
            catch (Exception ex)
            {
                //TODO Exception loggen
                throw ex;
            }
        }
Esempio n. 9
0
        public EinnahmeAusgabe AddNeueEinnahmeAusgabe(EinnahmeAusgabe neueEinnahmeAusgabe)
        {
            if (neueEinnahmeAusgabe == null)
            {
                return(null);
            }
            if (neueEinnahmeAusgabe.Buchungsdatum == null || neueEinnahmeAusgabe.Buchungsdatum == DateTime.MinValue)
            {
                return(null);
            }

            try
            {
                _Context.EinnahmenAusgaben.Add(neueEinnahmeAusgabe);
                _Context.SaveChanges();

                return(neueEinnahmeAusgabe);
            }
            catch (Exception ex)
            {
            }
            return(null);
        }
Esempio n. 10
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="tagListe"></param>
        public void UpdateTagListeEinnahmeAusgabe(EinnahmeAusgabe updateEinnahmeAusgabe, IList <Tag> tagListe)
        {
            try
            {
                var listEAT = _Context.EinnahmeAusgabeTags
                              .Include(eat => eat.Tag)
                              .Include(eat => eat.EinnahmeAusgabe)
                              .Where(eat => eat.EinnahmeAusgabeId == updateEinnahmeAusgabe.Id).ToList();

                //Ist die Tag-Liste noch aktuell
                if (!_Context.Tags.Any(t => tagListe.Contains(t)))
                {
                    //Einige Tageinträge anscheinend nicht mehr aktuelle -> löschen
                    for (int i = (tagListe.Count - 1); i >= 0; i--)
                    {
                        if (!_Context.Tags.Select(t => t.Id).Any(t => t == tagListe[i].Id))
                        {
                            tagListe.RemoveAt(i);
                        }
                    }
                }

                //Vergleichen ob alte und neu Tagliste gleich ist
                var altTagListe = listEAT.Select(eat => eat.Tag).OrderBy(t => t.Id).ToList();
                var neuTagListe = tagListe.OrderBy(t => t.Id).ToList();

                //Tags die hinzugekommen sind
                foreach (var neuTag in neuTagListe)
                {
                    if (!altTagListe.Any(t => t.Id == neuTag.Id))
                    {
                        //neuen Tag hinzufügen da noch nicht vorhanden
                        _Context.EinnahmeAusgabeTags.Add(new EinnahmeAusgabeTag()
                        {
                            EinnahmeAusgabe = updateEinnahmeAusgabe,
                            TagId           = neuTag.Id
                        });
                    }
                }

                //Tags die entfernt wurden
                foreach (var altTag in altTagListe)
                {
                    if (!neuTagListe.Any(t => t.Id == altTag.Id))
                    {
                        //alten Tag entfernen da nicht mehr vorhanden
                        var deleteEAT = _Context.EinnahmeAusgabeTags
                                        .Where(eat => eat.EinnahmeAusgabeId == updateEinnahmeAusgabe.Id)
                                        .Where(eat => eat.TagId == altTag.Id).FirstOrDefault();

                        if (deleteEAT != null)
                        {
                            _Context.EinnahmeAusgabeTags.Remove(deleteEAT);
                        }
                    }
                }

                _Context.SaveChanges();
            }
            catch (Exception ex)
            {
                //Exception loggen
                throw ex;
            }
        }
Esempio n. 11
0
        public async Task <IActionResult> AddEinnahmeAusgabe([FromBody] EinnahmeAusgabeViewModel neuEinnahmeAusgabeViewModel)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var currentUser = await _UserManager.FindByNameAsync(User.Identity.Name);

                    EinnahmeAusgabe neuEinahmeAusgabe     = new EinnahmeAusgabe();
                    EinnahmeAusgabe returnEinnahmeAusgabe = new EinnahmeAusgabe();

                    //Falls Eintrag wiederkehrend ist muss er mehrmals angelegt werden
                    if (neuEinnahmeAusgabeViewModel.Wiederkehrend)
                    {
                        var buchungsDatum = DateTime.Parse(neuEinnahmeAusgabeViewModel.BuchungsdatumJson);
                        var endDatum      = DateTime.Parse(neuEinnahmeAusgabeViewModel.EnddatumWiederkehrendJson);

                        //Wiederholungsrhythmus: wöchentlich, monatlich, jährlich
                        var wiederholungsRhythmus = neuEinnahmeAusgabeViewModel.RhythmusWiederkehrend;

                        if (buchungsDatum == null || endDatum == null)
                        {
                            returnEinnahmeAusgabe = SaveEinnahmeAusgabeInDB(neuEinnahmeAusgabeViewModel, currentUser);
                            return(Created($"api/finance/GetEinnahmeAusgabe({returnEinnahmeAusgabe.Id})", neuEinnahmeAusgabeViewModel));
                        }

                        if (endDatum.CompareTo(buchungsDatum) >= 0)
                        {
                            switch (wiederholungsRhythmus)
                            {
                            case 0:
                                //wöchentlicher Wiederholungsrhythmus
                                for (DateTime datum = buchungsDatum; datum.CompareTo(endDatum.AddDays(-7)) <= 0; datum = datum.AddDays(7))
                                {
                                    returnEinnahmeAusgabe = SaveEinnahmeAusgabeInDB(neuEinnahmeAusgabeViewModel, currentUser, datum);
                                }

                                return(Created($"api/finance/GetEinnahmeAusgabe({returnEinnahmeAusgabe.Id})", neuEinnahmeAusgabeViewModel));

                            case 1:
                                //monatlicher Wiederholungsrhythmus
                                for (DateTime datum = buchungsDatum; datum.CompareTo(endDatum.AddMonths(-1)) <= 0; datum = datum.AddMonths(1))
                                {
                                    returnEinnahmeAusgabe = SaveEinnahmeAusgabeInDB(neuEinnahmeAusgabeViewModel, currentUser, datum);
                                }

                                return(Created($"api/finance/GetEinnahmeAusgabe({returnEinnahmeAusgabe.Id})", neuEinnahmeAusgabeViewModel));

                            default:
                                //jährlicher Wiederholungsrhythmus
                                for (DateTime datum = buchungsDatum; datum.CompareTo(endDatum.AddYears(-1)) <= 0; datum = datum.AddYears(1))
                                {
                                    returnEinnahmeAusgabe = SaveEinnahmeAusgabeInDB(neuEinnahmeAusgabeViewModel, currentUser, datum);
                                }

                                return(Created($"api/finance/GetEinnahmeAusgabe({returnEinnahmeAusgabe.Id})", neuEinnahmeAusgabeViewModel));
                            }
                        }
                    }

                    returnEinnahmeAusgabe = SaveEinnahmeAusgabeInDB(neuEinnahmeAusgabeViewModel, currentUser);
                    return(Created($"api/finance/GetEinnahmeAusgabe({returnEinnahmeAusgabe.Id})", neuEinnahmeAusgabeViewModel));
                }
                else
                {
                    return(BadRequest(ModelState));
                }
            }
            catch (Exception ex)
            {
                return(BadRequest($"Neuer Eintrag konnte nicht gespeichert werden! Fehler: {ex.Message}, Innerer Fehler: {ex.InnerException}"));
            }
        }