public async Task <IActionResult> Register(RegisterViewModel model, string returnUrl = null)
        {
            ViewData["ReturnUrl"] = returnUrl;
            if (ModelState.IsValid)
            {
                var user = new DeliverNETUser
                {
                    FirstName = model.FirstName,
                    LastName  = model.LastName,
                    DOB       = model.DOB,
                    UserName  = model.Email.Split('@')[0],
                    Email     = model.Email
                };
                var result = await _userManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    // Add claims
                    switch (model.JobType)
                    {
                    case JobTypes.Individual:
                        _masterManager.GetDelivererManager().Create(user);
                        await _claimManager.AddClaim(user, JobTypes.Individual);

                        break;

                    case JobTypes.Businessman:
                        string newUserId = _userManager.FindByEmailAsync(user.Email).Result.Id;
                        _masterManager.GetBusinessOwnerManager().Create(user.Id);
                        await _claimManager.AddClaim(user, JobTypes.Businessman);

                        break;

                    case JobTypes.Cashier:
                        await _claimManager.AddClaim(user, JobTypes.Cashier);

                        break;

                    default:
                        break;
                    }



                    _logger.LogInformation("User created new account with password.");
                    await _signInManager.SignInAsync(user, isPersistent : false);

                    _logger.LogInformation("User logged in.");

                    return(RedirectOnJobType(user, "~/Account/Register"));
                }
                AddErrors(result);
            }

            // If we got this far, something went bad, redisplay form.
            return(View(model));
        }
Exemple #2
0
        public IActionResult SettingsAddCashier(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                model.JobType = JobTypes.Cashier;
                var user = new DeliverNETUser
                {
                    FirstName   = model.FirstName,
                    LastName    = model.LastName,
                    DOB         = model.DOB,
                    PhoneNumber = model.PhoneNumber,
                    UserName    = model.Email.Split('@')[0],
                    Email       = model.Email,
                };
                var result = _userManager.CreateAsync(user, model.Password).Result;
                if (result.Succeeded)
                {
                    // Add claims
                    switch (model.JobType)
                    {
                    case JobTypes.Individual:
                        _claimManager.AddClaim(user, JobTypes.Individual).Wait();
                        break;

                    case JobTypes.Businessman:
                        _claimManager.AddClaim(user, JobTypes.Businessman).Wait();
                        break;

                    case JobTypes.Cashier:
                        _claimManager.AddClaim(user, JobTypes.Cashier).Wait();
                        break;

                    default:
                        break;
                    }

                    // add to table of businesscashiers and assign to business
                    DeliverNETUser userOwner  = _userManager.FindByNameAsync((User.Identity.Name)).Result;
                    int            businessId = _masterManager.GetBusinessOwnerManager().Get(userOwner.Id).BusinessId;
                    Business       business   = _masterManager.GetBusinessManager().Get(businessId);
                    _masterManager.GetBusinessCashierManager().Create(user, business);

                    return(RedirectToAction("SettingsBusi"));
                }
                ModelState.AddModelError(string.Empty, "New cashier registration failed.");
            }

            return(View("SettingsBusi"));
        }
Exemple #3
0
        public async Task Seed()
        {
            // Initialize each manager
            _orderManager           = _masterManager.GetOrderManager();
            _delivererManager       = _masterManager.GetDelivererManager();
            _businessManager        = _masterManager.GetBusinessManager();
            _businessCashierManager = _masterManager.GetBusinessCashierManager();
            _businessOwnerManager   = _masterManager.GetBusinessOwnerManager();

            // Clear some data from db
            _orderManager.DeleteAll();



            //
            // Seed businesses
            //
            List <Business> testBusinesses = new List <Business>()
            {
                new Business()
                {
                    Title            = "Ραβαίσι",
                    Address          = "Μιχαλακοπούλου 32, Ζωγράφου 15771",
                    Geolocation      = "37.979567,23.757354",
                    Email            = "*****@*****.**",
                    SignupDate       = DateTime.Today,
                    VerificationDate = DateTime.Today,
                    Active           = true
                },
                new Business()
                {
                    Title            = "BigBadWolf",
                    Address          = "Λεωφ. Μεσογείων 202, Χολαργός 155 61",
                    Geolocation      = "38.001952,23.790455",
                    Email            = "*****@*****.**",
                    SignupDate       = DateTime.Today,
                    VerificationDate = DateTime.Today,
                    Active           = true
                },
                new Business()
                {
                    Title            = "Σάββας Κεμπάπ",
                    Address          = "Ερμού 91, Αθήνα 105 55",
                    Geolocation      = "37.976828,23.725088",
                    Email            = "*****@*****.**",
                    SignupDate       = DateTime.Today,
                    VerificationDate = DateTime.Today,
                    Active           = true
                }
            };
            Business tempBusiness;

            foreach (Business testBusiness in testBusinesses)
            {
                tempBusiness = _businessManager.Get(testBusiness.Title);
                if (tempBusiness == null)
                {
                    _businessManager.Create(testBusiness);
                }
            }


            //
            // Seed Roles
            //
            string[] Roles = { "admin", "user" };
            foreach (var role in Roles)
            {
                var res = await _roleManager.RoleExistsAsync(role);

                if (!res)
                {
                    await _roleManager.CreateAsync(new IdentityRole(role));
                }
            }

            //
            // Seed users
            //
            List <DeliverNETUser> testUsers = new List <DeliverNETUser>
            {
                new DeliverNETUser()
                {
                    Email = "*****@*****.**", UserName = "******"
                },
                new DeliverNETUser()
                {
                    Email = "*****@*****.**", UserName = "******"
                },
                new DeliverNETUser()
                {
                    Email = "*****@*****.**", UserName = "******"
                },
                new DeliverNETUser()
                {
                    Email = "*****@*****.**", UserName = "******"
                },
                new DeliverNETUser()
                {
                    Email = "*****@*****.**", UserName = "******"
                },
                new DeliverNETUser()
                {
                    Email = "*****@*****.**", UserName = "******"
                },
                new DeliverNETUser()
                {
                    Email = "*****@*****.**", UserName = "******"
                },
                new DeliverNETUser()
                {
                    Email = "*****@*****.**", UserName = "******"
                },
                new DeliverNETUser()
                {
                    Email = "*****@*****.**", UserName = "******"
                }
            };
            DeliverNETUser user;

            foreach (var tu in testUsers)
            {
                user = await _userManager.FindByEmailAsync(tu.Email);

                if (user != null)
                {
                    continue;
                }

                string password = tu.UserName;
                var    result   = await _userManager.CreateAsync(tu, password);

                if (result.Succeeded)
                {
                    _logger.LogInformation($"User {tu.UserName} created succesfully.");

                    DeliverNETUser newUser = await _userManager.FindByEmailAsync(tu.Email);

                    if (password.Contains("admin"))
                    {
                        await _userManager.AddToRoleAsync(newUser, "admin");
                    }

                    await _userManager.AddToRoleAsync(newUser, "user");

                    if (password.Contains("owner"))
                    {
                        await _claimManager.AddClaim(newUser, JobTypes.Businessman);

                        switch (password)
                        {
                        case "owner1":
                            _businessOwnerManager.Create(newUser.Id, _businessManager.Get("Ραβαίσι").Id);
                            break;

                        case "owner2":
                            _businessOwnerManager.Create(newUser.Id, _businessManager.Get("BigBadWolf").Id);
                            break;

                        case "owner3":
                            _businessOwnerManager.Create(newUser.Id, _businessManager.Get("Σάββας Κεμπάπ").Id);
                            break;
                        }
                        // TODO Add Business owner records for each one
                    }
                    else if (password.Contains("slave"))
                    {
                        await _claimManager.AddClaim(newUser, JobTypes.Individual);

                        _delivererManager.Create(newUser);
                    }
                    else if (password.Contains("cashier"))
                    {
                        await _claimManager.AddClaim(newUser, JobTypes.Cashier);

                        int      firstId        = _businessManager.GetAll().First().Id;
                        int      lastId         = _businessManager.GetAll().Last().Id;
                        Business randomBusiness = _businessManager.Get(new Random().Next(firstId, lastId));
                        _businessCashierManager.Create(newUser, randomBusiness);
                    }
                }
                else
                {
                    _logger.LogInformation($"User {tu.UserName} was not created.");
                }
            }

            //
            // Seed Orders
            //
            List <Order> testOrders = new List <Order>()
            {
                new Order()
                {
                    Business  = _businessManager.Get("Ραβαίσι"),
                    Deliverer = _delivererManager.Get(
                        _userManager.FindByNameAsync("slave1").Result.Id
                        ),
                    Tstamp        = DateTime.Now,
                    Address       = "Αρχιλόχου 7",
                    Geolocation   = "37.973217,23.773856",
                    FirstName     = "Orestis",
                    LastName      = "Koskoletos",
                    FloorNo       = 1,
                    DoorName      = "Koskoletas",
                    PhoneNumber   = "6970456845",
                    PaymentTypeId = 0,
                    Price         = 6.30f,
                    Comments      = "Gamw to spitakis sou",
                    IsTimedOut    = false
                },
                new Order()
                {
                    Business  = _businessManager.Get("BigBadWolf"),
                    Deliverer = _delivererManager.Get(
                        _userManager.FindByNameAsync("slave3").Result.Id
                        ),
                    Tstamp        = DateTime.Now,
                    Address       = "Λουλουδιών 33",
                    Geolocation   = "37.973217,23.773856",
                    FirstName     = "Μάριος",
                    LastName      = "Ράδης",
                    FloorNo       = 6,
                    DoorName      = "Ραδής",
                    PhoneNumber   = "6912345678",
                    PaymentTypeId = 0,
                    Price         = 4.90f,
                    Comments      = "μπεμπααααα",
                    IsTimedOut    = false
                },
                new Order()
                {
                    Business  = _businessManager.Get("Σάββας Κεμπάπ"),
                    Deliverer = _delivererManager.Get(
                        _userManager.FindByNameAsync("slave2").Result.Id
                        ),
                    Tstamp        = DateTime.Now,
                    Address       = "Μεσογείων 138",
                    Geolocation   = "37.977217,23.763856",
                    FirstName     = "Στάθης",
                    LastName      = "Πανταζής",
                    FloorNo       = 4,
                    DoorName      = "Ραδής",
                    PhoneNumber   = "6987654321",
                    PaymentTypeId = 1,
                    Price         = 12.70f,
                    Comments      = "μουνοπανοοο",
                    IsTimedOut    = false
                }
            };

            foreach (Order testOrder in testOrders)
            {
                _orderManager.Create(testOrder);
            }
        }