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; } }
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}")); } }
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}")); } }
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; } }
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; } }
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; } }
/// <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); }
/// <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; } }
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); }
/// <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; } }
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}")); } }