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