Esempio n. 1
0
        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());
        }
Esempio n. 2
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. 3
0
        /// <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;
            }
        }
Esempio n. 4
0
        /// <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;
            }
        }
Esempio n. 5
0
        /// <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);
        }
Esempio n. 6
0
 /// <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;
     }
 }
Esempio n. 7
0
        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;
            }
        }
Esempio n. 8
0
        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;
            }
        }
Esempio n. 9
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. 10
0
        /// <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);
            }
        }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
        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;
            }
        }
Esempio n. 13
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. 14
0
 /// <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();
 }
Esempio n. 15
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;
     }
 }