private static async Task <BankAccount> GetOwnBankAccount(ClubTreasurerContext context, string ownIban)
        {
            var account = await context.BankAccounts.FirstOrDefaultAsync(a => a.ID == ownIban);

            if (account != null)
            {
                return(account);
            }
            else
            {
                account = new BankAccount
                {
                    ID   = ownIban,
                    Name = "Rugby Club Innsbruck"
                };

                context.BankAccounts.Add(account);

                try
                {
                    await context.SaveChangesAsync();
                }
                catch (Exception ex)
                {
                    var test = ex;
                }
                return(account);
            }
        }
        private static async Task <BankTransactionCategory> GetOrCreateNewCategory(ClubTreasurerContext context, GeorgeTransaction transaction)
        {
            var category = await SearchByMultipleKeyword(context, transaction.Reference);

            if (category != null)
            {
                return(category);
            }
            else
            {
                category = await context.BankTransactionCategorys.FirstOrDefaultAsync(a => a.Name == "Undefined");
            }
            if (category != null)
            {
                return(category);
            }
            else
            {
                category = new BankTransactionCategory()
                {
                    Name = "Undefined",
                };
                context.BankTransactionCategorys.Add(category);
                await context.SaveChangesAsync();
            }
            return(category);
        }
Beispiel #3
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ClubTreasurerContext context,
                              RoleManager <AppRole> roleManager, UserManager <AppUser> userManager, IOptions <RCIConfig> rciConfig)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseDatabaseErrorPage();
            }
            else
            {
                app.UseExceptionHandler("/Error");
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseStaticFiles();
            app.UseCookiePolicy();

            app.UseAuthentication();

            IdentitySeed.Initialize(context, userManager, rciConfig, roleManager, Configuration).Wait();

            //TODO: Delete after deployment
            //if (env.IsDevelopment())
            //{
            //    app.Use(async (httpContext, next) =>
            //    {
            //        var user = httpContext.User.Identity.Name;
            //        DeveloperLogin(httpContext).Wait();
            //        await next.Invoke();
            //    });
            //}

            app.UseMvc();
        }
        public static async Task <bool> SaveGeorgeTransactionsToDB(ClubTreasurerContext context, List <GeorgeTransaction> georgeTransactions)
        {
            List <BankTransaction> transactions = new List <BankTransaction>();

            foreach (var transaction in georgeTransactions)
            {
                transactions.Add(new BankTransaction()
                {
                    ID                  = transaction.ReferenceNumber,
                    BookingDate         = transaction.BookingDate,
                    Amount              = (decimal)(transaction.Amount.Value * Math.Pow(10.00, -transaction.Amount.Precision)),
                    Reference           = transaction.Reference,
                    Account             = await GetOrCreateNewAccount(context, transaction),
                    TransactionCategory = await GetOrCreateNewCategory(context, transaction)
                });
            }

            try
            {
                foreach (var transaction in transactions)
                {
                    context.BankTransactions.AddIfNotExists(transaction, t => t.ID);
                }
                await context.SaveChangesAsync();

                return(true);
            }
            catch (Exception ex)
            {
                //tried to add duplicate data
                var test = ex;
                return(false);
            }
        }
        public static async Task <BankTransactionCategory> SearchByMultipleKeyword(ClubTreasurerContext context, string reference)
        {
            string[] keywords = reference.Split(',');

            var allCategories = await context.BankTransactionCategorys.Where(c => c.KeyWords != null).ToListAsync();

            foreach (var category in allCategories)
            {
                if (category.KeyWords.Split(',').Any(s => reference.Contains(s, StringComparison.OrdinalIgnoreCase)))
                {
                    return(category);
                }
            }

            return(null);
        }
        public static async Task Initialize(ClubTreasurerContext context,
                                            UserManager <AppUser> userManager, IOptions <RCIConfig> rciConfig,
                                            RoleManager <AppRole> roleManager, IConfiguration configuration)
        {
            context.Database.EnsureCreated();

            string adminRole        = "Admin";
            string adminDescription = "This is the administrator role";

            var passwords      = configuration.GetSection("Passwords");
            var adminPassword  = passwords.GetValue <string>("AdminPassword");
            var adminEmail     = rciConfig.Value.AdminEmailAddress;
            var adminFirstName = rciConfig.Value.AdminFirstName;
            var adminLastName  = rciConfig.Value.AdminLastName;;

            if (await roleManager.FindByNameAsync(adminRole) == null)
            {
                await roleManager.CreateAsync(new AppRole(adminRole, adminDescription, DateTime.Now));
            }


            if (await userManager.FindByEmailAsync(adminEmail) == null)
            {
                var user = new AppUser
                {
                    UserName       = $"{adminFirstName} {adminLastName} (Administrator)",
                    FirstName      = adminFirstName,
                    LastName       = adminLastName,
                    Email          = adminEmail,
                    EmailConfirmed = true
                };

                var result = await userManager.CreateAsync(user);

                if (result.Succeeded)
                {
                    await userManager.AddPasswordAsync(user, adminPassword);

                    await userManager.AddToRoleAsync(user, adminRole);

                    await userManager.UpdateNormalizedEmailAsync(user);

                    await userManager.UpdateNormalizedUserNameAsync(user);
                }
            }
        }
Beispiel #7
0
 public IdCardModel(ClubTreasurerContext context, IOptions <RCIConfig> rciConfig)
 {
     _context   = context;
     _rciConfig = rciConfig;
 }
Beispiel #8
0
 public EditModel(ClubTreasurerContext context)
 {
     _context = context;
 }
        private static async Task <BankAccount> GetOrCreateNewAccount(ClubTreasurerContext context, GeorgeTransaction transaction)
        {
            BankAccount account;

            if (transaction.PartnerAccount?.Iban == null)
            {
                //cash payment
                account = await GetOwnBankAccount(context, "AT722050303300000928");

                if (account != null)
                {
                    return(account);
                }
            }

            account = await context.BankAccounts.FirstOrDefaultAsync(a => a.ID == transaction.PartnerAccount.Iban);

            if (account != null)
            {
                return(account);
            }
            else
            {
                account = new BankAccount
                {
                    ID   = transaction.PartnerAccount.Iban,
                    Name = transaction.PartnerName
                };

                context.BankAccounts.Add(account);

                try
                {
                    await context.SaveChangesAsync();
                }
                catch (Exception ex)
                {
                    var test = ex;
                }

                //try to assign it to a person
                var person = context.Persons.Where(p => p.FullName == transaction.PartnerName || p.FullNameReverse == transaction.PartnerName).FirstOrDefault();
                if (person != null)
                {
                    context.Attach(person).State = EntityState.Modified;
                    if (person.BankAccounts == null)
                    {
                        person.BankAccounts = new List <BankAccount>
                        {
                            account
                        };
                        await context.SaveChangesAsync();
                    }
                    else
                    {
                        person.BankAccounts.Add(account);
                    }
                }
                return(account);
            }
        }
Beispiel #10
0
 public IndexModel(ClubTreasurerContext context)
 {
     _context = context;
 }
Beispiel #11
0
 public CreateModel(ClubTreasurerContext context)
 {
     _context = context;
 }
 public ImportModel(ClubTreasurerContext context)
 {
     _context = context;
 }
Beispiel #13
0
 public DeleteModel(ClubTreasurerContext context)
 {
     _context = context;
 }
 public DetailsModel(ClubTreasurerContext context)
 {
     _context = context;
 }
Beispiel #15
0
 public EditModel(ClubTreasurerContext context, IMapper mapper)
 {
     _context = context;
     _mapper  = mapper;
 }