public async Task <IActionResult> Register([FromBody] RegisterViewModel regModel) { if (ModelState.IsValid) { var neuUser = new FinanceAppUser { UserName = regModel.Username, Email = regModel.Email }; var result = await _UserManager.CreateAsync(neuUser, regModel.Password); if (result.Succeeded) { await _SignInManager.SignInAsync(neuUser, false); var results = CreateToken(neuUser); return(Created("", results)); } else { foreach (var error in result.Errors) { ModelState.AddModelError("", error.Description); } return(BadRequest(ModelState)); } } return(BadRequest()); }
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> /// Entfernt Tag aus der Datenbank...wenn erfolgreich wird true zurückgegeben /// </summary> /// <param name="tagId"></param> /// <returns></returns> public bool RemoveTag(FinanceAppUser user, long tagId) { try { var tag2Remove = _Context.Tags.Where(t => t.Id == tagId && t.User == user).FirstOrDefault(); if (tag2Remove == null) { return(false); } //Verweise Finanzeintrag und Tag müssen gelöscht werden var finTags2Remove = _Context.EinnahmeAusgabeTags.Where(eat => eat.TagId == tagId); _Context.Remove(tag2Remove); if (finTags2Remove != null && finTags2Remove.Count() > 0) { _Context.EinnahmeAusgabeTags.RemoveRange(finTags2Remove.ToList()); } _Context.SaveChanges(); return(true); } catch (Exception ex) { //loggen der Exception throw ex; } }
/// <summary> /// Alle Finanzeinträge die einen User zugeordnet sind und mindestens einen der Tags enthalten /// </summary> /// <param name="user"></param> /// <param name="listFilterTags"></param> /// <returns></returns> public IList <EinnahmeAusgabe> GetEinnahmenAusgaben(FinanceAppUser user, IEnumerable <Tag> listFilterTags) { try { var einnahmenAusgabenGefiltert = _Context.EinnahmeAusgabeTags .Include(eat => eat.EinnahmeAusgabe) .Include(eat => eat.Tag) .Where(eat => eat.EinnahmeAusgabe.User == user) .Where(eat => listFilterTags.Contains(eat.Tag)) .Select(eat => eat.EinnahmeAusgabe) .Include(ea => ea.EinnahmenAusgabenTags) .ThenInclude(eat => eat.Tag) .OrderByDescending(ea => ea.Buchungsdatum) .Distinct() .ToList(); foreach (var einAusgabe in einnahmenAusgabenGefiltert) { einAusgabe.Tags = einAusgabe.EinnahmenAusgabenTags.Select(eat => eat.Tag).ToList(); } return(einnahmenAusgabenGefiltert); } catch (Exception ex) { //TODO Exception loggen throw ex; } }
/// <summary> /// /// </summary> public void AddTagToEinnahmeAusgabe(long einnahmeAusgabeId, long tagId, FinanceAppUser user) { var einnahmeAusgabe = _Context.EinnahmenAusgaben.Where(ea => ea.Id == einnahmeAusgabeId).FirstOrDefault(); var tag = _Context.Tags.Where(t => t.Id == tagId).FirstOrDefault(); if (einnahmeAusgabe == null || tag == null) { return; } this.AddTagToEinnahmeAusgabe(einnahmeAusgabe, tag, user); }
/// <summary> /// Alle Tags die einem User zugeordnet sind /// </summary> /// <returns></returns> public IEnumerable <Tag> GetUserTags(FinanceAppUser user) { try { return(_Context.Tags .Where(t => t.User == user)); } catch (Exception ex) { throw ex; } }
public FinanceImage AddNeuImage(FinanceImage neuImage, FinanceAppUser user) { try { neuImage.User = user; _Context.EinnahmeAusgabeBilder.Add(neuImage); _Context.SaveChanges(); return(neuImage); } catch (Exception ex) { //TODO Fehler loggen throw ex; } }
public string GetImageSource(long imageId, FinanceAppUser user) { try { var finImage = _Context.EinnahmeAusgabeBilder.Where(eab => eab.User == user && eab.Id == imageId).FirstOrDefault(); if (finImage == null) { return(string.Empty); } return(finImage.Path); } catch (Exception ex) { //TODO Fehler loggen 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> /// Erzeugen einen neuen Token /// (Beispielsweise nach Registrierung oder nach Login) /// </summary> /// <param name="user"></param> /// <returns></returns> private object CreateToken(FinanceAppUser user) { try { //Create the Token var claims = new[] { new Claim(JwtRegisteredClaimNames.Sub, user.Email), new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()), //TODO Wird dies benötigt??? new Claim(JwtRegisteredClaimNames.UniqueName, user.UserName) }; //Token-Key in der config-Datei abgelegt var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_Config["Tokens:Key"])); var credentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); var token = new JwtSecurityToken( _Config["Tokens:Issuer"], _Config["Tokens:Audience"], claims, expires: DateTime.UtcNow.AddHours(4), signingCredentials: credentials); var results = new { token = new JwtSecurityTokenHandler().WriteToken(token), expiration = token.ValidTo }; return(results); } catch (Exception ex) { //Falls es beim CreateToken zum Fehler kommt return(ex.Message); } }
public EinnahmeAusgabe GetEinnahmeAusgabeDetail(FinanceAppUser user, long Id) { if (Id <= 0) { return(null); } //Wenn keine Tags vorhanden sind var finEntry = _Context.EinnahmenAusgaben .Include(f => f.EinnahmenAusgabenTags) .ThenInclude(ft => ft.Tag) .Where(f => f.User == user) .Where(f => f.Id == Id) .FirstOrDefault(); //Tags anhängen if (finEntry.EinnahmenAusgabenTags != null && finEntry.EinnahmenAusgabenTags.Count > 0) { finEntry.Tags = finEntry.EinnahmenAusgabenTags.Select(t => t.Tag).ToList(); } return(finEntry); }
public Tag AddUserTag(FinanceAppUser user, Tag newTag) { try { newTag.User = user; //Falls Tag schon vorhanden dann wird er nicht noch einmal abgespeichert if (_Context.Tags.Any(t => t.TagBenennung.Equals(newTag.TagBenennung, StringComparison.OrdinalIgnoreCase) && t.User == user)) { return(null); } _Context.Tags.Add(newTag); _Context.SaveChanges(); return(newTag); } catch (Exception ex) { //TODO Exception loggen throw ex; } }
/// <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; } }
/// <summary> /// Suche nach User-Custom-Tags welche den übergebenen String im Namen enthalten /// </summary> /// <param name="user"></param> /// <param name="tagName"></param> /// <returns></returns> IEnumerable <Tag> ITagsRepository.SearchUserTags(FinanceAppUser user, string tagName) { throw new NotImplementedException(); }
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; } }