public async Task <IActionResult> CompleteMaintenance(int id)
        {
            var maintenance = await _context.TblRoomMaintenance.FindAsync(id);

            maintenance.EndDatetime = DateTime.Now;

            _context.Update(maintenance);

            await _context.SaveChangesAsync();

            return(Redirect("~/Maintenance"));
        }
        public async Task <IActionResult> EditReservation(ReservationModel reservationModel)
        {
            if (ModelState.IsValid)
            {
                TblPerson tblPerson = new TblPerson
                {
                    PersonId     = reservationModel.PersonID,
                    FirstName    = reservationModel.FirstName,
                    LastName     = reservationModel.LastName,
                    City         = reservationModel.City,
                    Country      = reservationModel.Country,
                    EmailAddress = reservationModel.EmailAddress,
                    PhoneNumber  = reservationModel.PhoneNumber,
                    PostalCode   = reservationModel.PostalCode,
                    StreetName   = reservationModel.StreetName,
                    StreetNumber = reservationModel.StreetNumber,
                };

                TblReservation tblReservation = new TblReservation
                {
                    ReservationId      = reservationModel.ReservationID,
                    PersonId           = tblPerson.PersonId,
                    ExpectedArriveDate = reservationModel.ExpectedArrivalDate,
                    ExpectedLeaveDate  = reservationModel.ExpectedLeaveDate,
                    RoomNumber         = reservationModel.RoomNumber,
                    ReservationNotes   = reservationModel.Notes
                };

                _context.Update(tblPerson);
                _context.Update(tblReservation);

                await _context.SaveChangesAsync();

                return(Redirect("~/Concierge/Reservations"));
            }

            ViewData["RoomNumber"] = new SelectList(_context.TblRooms.Where(s => s.RoomStatus == 0), "RoomNumber", "RoomNumber");
            return(View(reservationModel));
        }
        public async Task <IActionResult> UpdateEmployee(int?id, EmployeeModel employeeModel)
        {
            if (id != employeeModel.PersonID)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                TblPerson tblPerson = new TblPerson
                {
                    PersonId     = employeeModel.PersonID,
                    FirstName    = employeeModel.FirstName,
                    LastName     = employeeModel.LastName,
                    EmailAddress = employeeModel.EmailAddress,
                    PhoneNumber  = employeeModel.PhoneNumber,
                    StreetNumber = employeeModel.StreetNumber,
                    StreetName   = employeeModel.StreetName,
                    City         = employeeModel.City,
                    PostalCode   = employeeModel.PostalCode,
                    Country      = employeeModel.Country,
                };

                TblEmployee tblEmployee = new TblEmployee
                {
                    EmployeeId             = employeeModel.PersonID,
                    EmergencyContactName   = employeeModel.EmergencyContactName,
                    EmergencyContactNumber = employeeModel.EmergencyContactNumber,
                };

                _context.Update(tblPerson);
                _context.Update(tblEmployee);

                await _context.SaveChangesAsync();

                var position         = _context.TblPosition.Where(x => x.EmployeeId == employeeModel.PersonID && x.EndDate == null).ToList();
                var positionID       = 0;
                var previousRecordID = 0;
                foreach (var x in position)
                {
                    previousRecordID = x.Id;
                    positionID       = x.PositionId;
                }

                if (positionID != employeeModel.Position)
                {
                    var previousRecord = _context.TblPosition.Find(previousRecordID);
                    previousRecord.EndDate = DateTime.Now;
                    _context.Update(previousRecord);

                    TblPosition tblPosition = new TblPosition
                    {
                        EmployeeId = employeeModel.PersonID,
                        PositionId = employeeModel.Position,
                        StartDate  = DateTime.Now,
                    };
                    await _context.TblPosition.AddAsync(tblPosition);

                    var user = _userManager.Users.Where(x => x.UserName == employeeModel.EmailAddress).ToList();

                    foreach (var x in user)
                    {
                        var previousUser = _dbContext.Users.Find(x.Id);
                        var removeUser   = await _userManager.RemoveFromRoleAsync(previousUser, _context.LkpPositionTypes.Find(positionID).Description.ToString());

                        if (removeUser.Succeeded)
                        {
                            await _userManager.AddToRoleAsync(previousUser, _context.LkpPositionTypes.Find(employeeModel.Position).Description.ToString());
                        }
                    }

                    await _context.SaveChangesAsync();
                }

                return(Redirect("/Admin/Employee"));
            }
            ViewData["Position"] = new SelectList(_context.LkpPositionTypes.Where(s => s.IsActive == true), "PositionId", "Description");
            return(View(employeeModel));
        }