Esempio n. 1
0
        public async Task <IActionResult> CreateUserAdmin(SystemAdminViewModel vm)
        {
            ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();

            if (ModelState.IsValid)
            {
                //Til systemadmin til at oprette de forskellige typer brugere
                var user = new UserAdmin()
                {
                    UserName    = vm.Input.Email,
                    Email       = vm.Input.Email,
                    Name        = vm.Input.Name,
                    WorkAddress = new Address()
                    {
                        StreetAddress = vm.Input.StreetAddress, Zipcode = vm.Input.Zipcode
                    },
                    PhoneNumber    = vm.Input.Phonenumber,
                    PaymentMethod  = vm.Input.PaymentMethod,
                    EmailConfirmed = true
                };

                var result = await _userManager.CreateAsync(user, vm.Input.Password);

                if (result.Succeeded)
                {
                    await _userManager.AddClaimAsync(user, new Claim("UserAdmin", "IsUserAdmin"));

                    _logger.LogInformation("UserAdmin is created! ");

                    var systemadmin = await _dataAccess.SystemAdmins.GetSingleSystemAdminAsync(User.Identity.Name);

                    systemadmin.UserAdmins.Add(user);
                    _dataAccess.Complete();

                    //if (_userManager.Options.SignIn.RequireConfirmedAccount)
                    //{
                    //    return RedirectToPage("RegisterConfirmation", new { email = vm.Input.Email, returnUrl = returnUrl });
                    //}
                    //else
                    //{
                    //    await _signInManager.SignInAsync(user, isPersistent: false);
                    //    return LocalRedirect(returnUrl);
                    //}
                }

                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }
            return(RedirectToAction(nameof(Index)));
        }
Esempio n. 2
0
        public IActionResult DeleteUser(string username)
        {
            if (User.HasClaim("UserAdmin", "IsUserAdmin") || User.HasClaim("SystemAdmin", "IsSystemAdmin"))
            {
                if (username == null)
                {
                    return(NotFound());
                }

                if (_userAdminViewModel.CurrentLaundryUser != null)
                {
                    if (_userAdminViewModel.CurrentLaundryUser.UserName == username || _userAdminViewModel.CurrentLaundryUser.Email == username)
                    {
                        _userAdminViewModel.CurrentLaundryUser = null;
                    }
                }

                var userToDelete = _dataAccess.LaundryUsers.GetSingleLaundryUser(username);

                _dataAccess.LaundryUsers.DeleteUser(userToDelete);
                _dataAccess.Complete();

                return(RedirectToAction(nameof(MyUsers)));
            }

            return(Unauthorized());
        }
Esempio n. 3
0
        public IActionResult CheckIn(WaiterViewModel waiterViewModel, string btn)
        {
            var id = int.Parse(btn);

            foreach (var guest in waiterViewModel.Guests)
            {
                if (guest.GuestID == id)
                {
                    _dataAccess.Guests.CheckIn(guest.GuestID);
                    _dataAccess.Complete();
                }
            }

            TempData["Room Index"] =
                waiterViewModel.Guests.SingleOrDefault(g => g.GuestID == id).HotelRoomID;

            return(RedirectToAction(nameof(Index)));
        }
Esempio n. 4
0
        public IActionResult CompleteGuest(ReceptionistViewModel receptionistViewModel, string bookButton)
        {
            //Hvis reservationen ligger idag, tjek for dette, ellers ikke
            if (_dataAccess.Guests.ReservationPossible(receptionistViewModel.CurrentGuest.GuestID, receptionistViewModel.CurrentGuest.LastReservationDate))
            {
                _dataAccess.Guests.MakeReservation(receptionistViewModel.CurrentGuest.GuestID, receptionistViewModel.CurrentGuest.LastReservationDate);
                _dataAccess.Complete();
                TempData["Booking"] = bookButton;
            }
            else
            {
                TempData["Fail"] = bookButton;
            }



            return(RedirectToAction(nameof(Index)));
        }
Esempio n. 5
0
        public async Task <IActionResult> OnPostAsync(string returnUrl = null)
        {
            returnUrl ??= Url.Content("~/");
            ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();

            if (ModelState.IsValid)
            {
                //Til useradmin til at oprette laundrytime brugere
                if (User.HasClaim("UserAdmin", "IsUserAdmin"))
                {
                    var user = new LaundryUser {
                        UserName = Input.Email, Email = Input.Email, Name = Input.Name, ActiveUser = true,
                        Address  = new Address()
                        {
                            StreetAddress = Input.StreetAddress, Zipcode = Input.Zipcode
                        },
                        PhoneNumber = Input.Phonenumber, PaymentMethod = Input.PaymentMethod
                    };

                    var result = await _userManager.CreateAsync(user, Input.Password);

                    if (result.Succeeded)
                    {
                        _logger.LogInformation("User created a new account with password.");

                        var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                        await _userManager.AddClaimAsync(user, new Claim("LaundryUser", "IsLaundryUser"));

                        code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
                        var callbackUrl = Url.Page(
                            "/Account/ConfirmEmail",
                            pageHandler: null,
                            values: new { area = "Identity", userId = user.Id, code = code, returnUrl = returnUrl },
                            protocol: Request.Scheme);

                        MailMessage message = new MailMessage()
                        {
                            From       = new MailAddress("*****@*****.**"), // sender must be a full email address
                            Subject    = "Please confirm your e-mail",
                            IsBodyHtml = true,
                            Body       = $"<h3>Hello {user.Name}</h3><p>Thank you for registering with Laundry Time!</p> " +
                                         $"<p>Below you will find your user information:</p> <p>User name: {user.Email} </p> " +
                                         $"<p>Password: {Input.Password} </p> " +
                                         $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>. " +
                                         $"<br/> <br/> <img width='100' src='https://t4.ftcdn.net/jpg/03/09/29/23/360_F_309292393_4G7XxgXz5ftKSuSStItdT2ZK1snVEH08.jpg'/> <p>Kind regards</p> <p>Laundry Time</p>",
                            BodyEncoding    = System.Text.Encoding.UTF8,
                            SubjectEncoding = System.Text.Encoding.UTF8,
                            To = { user.Email }
                        };

                        string smsMsg =
                            $"Hi {user.Name}!\n\nThank you for registering with Laundry Time!\n" +
                            $"Below you will find your user information:\nUser name: {user.Email}" +
                            $"\nPassword: {Input.Password}\n\n" +
                            $"Please remember to confirm your account by clicking the link in the mail sent to {user.Email}";

                        SendMail(message);
                        SendSMS(user.PhoneNumber, smsMsg);

                        if (User.Identity != null)
                        {
                            var useradmin = _dataAccess.UserAdmins.GetSingleUserAdmin(User.Identity.Name);
                            useradmin.Users.Add(user);
                            _dataAccess.Complete();
                        }

                        if (_userManager.Options.SignIn.RequireConfirmedAccount)
                        {
                            return(RedirectToPage("RegisterConfirmation", new { email = Input.Email, returnUrl = returnUrl }));
                        }
                        else
                        {
                            await _signInManager.SignInAsync(user, isPersistent : false);

                            return(LocalRedirect(returnUrl));
                        }
                    }
                    foreach (var error in result.Errors)
                    {
                        ModelState.AddModelError(string.Empty, error.Description);
                    }
                }

                //Til systemadmin til at oprette de forskellige typer brugere
                if (User.HasClaim("SystemAdmin", "IsSystemAdmin"))
                {
                    var user = new UserAdmin
                    {
                        UserName      = Input.Email,
                        Email         = Input.Email,
                        Name          = Input.Name,
                        PhoneNumber   = Input.Phonenumber,
                        PaymentMethod = Input.PaymentMethod
                    };
                    var result = await _userManager.CreateAsync(user, Input.Password);

                    if (result.Succeeded)
                    {
                        _logger.LogInformation("User created a new account with password.");

                        var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                        code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
                        var callbackUrl = Url.Page(
                            "/Account/ConfirmEmail",
                            pageHandler: null,
                            values: new { area = "Identity", userId = user.Id, code = code, returnUrl = returnUrl },
                            protocol: Request.Scheme);

                        MailMessage message = new MailMessage()
                        {
                            From       = new MailAddress("*****@*****.**"), // sender must be a full email address
                            Subject    = "Please confirm your e-mail",
                            IsBodyHtml = true,
                            Body       = $"<h3>Hello {user.Name}</h3><p>Thank you for registering with Laundry Time!</p> " +
                                         $"<p>Below you will find your user information:</p> <p>User name: {user.Email} </p> " +
                                         $"<p>Password: {Input.Password} </p> " +
                                         $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>. " +
                                         $"<br/> <br/> <img width='100' src='https://t4.ftcdn.net/jpg/03/09/29/23/360_F_309292393_4G7XxgXz5ftKSuSStItdT2ZK1snVEH08.jpg'/> <p>Kind regards</p> <p>Laundry Time</p>",
                            BodyEncoding    = System.Text.Encoding.UTF8,
                            SubjectEncoding = System.Text.Encoding.UTF8,
                            To = { user.Email }
                        };

                        string smsMsg =
                            $"Hi {user.Name}!\n\nThank you for registering with Laundry Time!\n" +
                            $"Below you will find your user information:\nUser name: {user.Email}" +
                            $"\nPassword: {Input.Password}\n\n" +
                            $"Please remember to confirm your account by clicking the link in the mail sent to {user.Email}";

                        SendMail(message);
                        SendSMS(user.PhoneNumber, smsMsg);

                        if (_userManager.Options.SignIn.RequireConfirmedAccount)
                        {
                            return(RedirectToPage("RegisterConfirmation", new { email = Input.Email, returnUrl = returnUrl }));
                        }
                        else
                        {
                            await _signInManager.SignInAsync(user, isPersistent : false);

                            return(LocalRedirect(returnUrl));
                        }
                    }

                    foreach (var error in result.Errors)
                    {
                        ModelState.AddModelError(string.Empty, error.Description);
                    }
                }
            }

            // If we got this far, something failed, redisplay form
            return(Page());
        }
        public async Task <IActionResult> Book(long?id)
        {
            if (User.HasClaim("LaundryUser", "IsLaundryUser"))
            {
                var bookingOrder = await _dataAccess.BookingList.SingleBook(id);

                if (bookingOrder == null)
                {
                    return(NotFound());
                }
                else
                {
                    var reservedBookings = new ReservedListModel()
                    {
                        Date    = bookingOrder.Date,
                        Machine = bookingOrder.Machine,
                        Time    = bookingOrder.Time,
                        OldId   = bookingOrder.Id,
                        Name    = User.Identity.Name
                    };
                    //_context.ReservedListModels.Add(reservedBookings);
                    _dataAccess.ReservedList.AddSingleReservation(reservedBookings);
                    bookingOrder.Status = false;
                    var LUser      = User.Identity.Name;
                    var tempUser   = _dataAccess.LaundryUsers.GetSingleLaundryUser(LUser);
                    var laundryLog = new LaundryLog()
                    {
                        LaundryUser = tempUser,
                        LogDate     = DateTime.Now,
                        LogInfo     = $"Booked machine {reservedBookings.Machine.MachineId} of the type {reservedBookings.Machine.Type} for {reservedBookings.Date} at {reservedBookings.Time}"
                    };
                    _dataAccess.LaundryLogs.AddLaundryLog(laundryLog);
                    _dataAccess.Complete();
                }
                //Dette bliver ikke brugt. Hvad er dettes formål?
                var BookingList = await _dataAccess.BookingList.GetBookingList();

                List <BookingListViewModel> modelList = new List <BookingListViewModel>();

                foreach (var booking in BookingList)
                {
                    if (booking.Status == true)
                    {
                        BookingListViewModel model = new BookingListViewModel();
                        model.BookingID   = booking.Id;
                        model.Date        = booking.Date;
                        model.MachineName = booking.Machine.MachineId;
                        model.MachineType = booking.Machine.Type;
                        model.Time        = booking.Time;

                        modelList.Add(model);
                    }
                }

                DateViewModel dvm = new DateViewModel()
                {
                    Datedata = bookingOrder.Date
                };

                return(RedirectToAction("AvailableBookings", dvm));
            }

            return(Unauthorized());
        }