public UserProfileController()
 {
     unitOfWork = new UnitOfWork(new RoomMateDbContext());
     userProfileToeditViewModel = new UserProfileToEditViewModel();
     userProfileToDisplayView   = new UserProfileToDisplayViewModel();
 }
        public ActionResult AddRoom(UserProfileToEditViewModel _userProfileToeditViewModel)
        {
            if (Session["UserID"] != null)
            {
                string userID = Session["UserID"].ToString();
                userProfileToeditViewModel.user = unitOfWork.UsersRepository.GetActiveUser(new Guid(userID));

                try
                {
                    if (ModelState.IsValid)
                    {
                        //create room object
                        Room room = new Room();
                        room.RoomID         = Guid.NewGuid();
                        room.Name           = _userProfileToeditViewModel.roomToEdit.Name;
                        room.Price          = _userProfileToeditViewModel.roomToEdit.Price;
                        room.Description    = _userProfileToeditViewModel.roomToEdit.Description;
                        room.IsActive       = true;
                        room.NumberOfGuests = _userProfileToeditViewModel.roomToEdit.NumberOfGuests;
                        room.User           = userProfileToeditViewModel.user;

                        //create room images objetcs
                        addNewRoomImagesToDataBase(_userProfileToeditViewModel.images, room.RoomID, room.User.UserID, room);

                        //create equipment object
                        Equipment equipment = new Equipment();
                        equipment.EquipmentID       = Guid.NewGuid();
                        equipment.IsWifi            = _userProfileToeditViewModel.equipmentToEdit.IsWifi;
                        equipment.IsAirConditioning = _userProfileToeditViewModel.equipmentToEdit.IsAirConditioning;
                        equipment.IsParking         = _userProfileToeditViewModel.equipmentToEdit.IsParking;
                        equipment.IsTelevision      = _userProfileToeditViewModel.equipmentToEdit.IsTelevision;
                        equipment.IsKitchen         = _userProfileToeditViewModel.equipmentToEdit.IsKitchen;
                        equipment.IsWashingMachine  = _userProfileToeditViewModel.equipmentToEdit.IsWashingMachine;

                        unitOfWork.EquipmentRepository.Insert(equipment);

                        //create address object
                        Address address = new Address();
                        address.AddressID = Guid.NewGuid();
                        address.City      = _userProfileToeditViewModel.addressToEdit.City;
                        address.Street    = _userProfileToeditViewModel.addressToEdit.Street;
                        address.Flat      = _userProfileToeditViewModel.addressToEdit.Flat;
                        address.PostCode  = _userProfileToeditViewModel.addressToEdit.PostCode;
                        address.Lon       = _userProfileToeditViewModel.addressToEdit.Lon;
                        address.Lat       = _userProfileToeditViewModel.addressToEdit.Lat;

                        unitOfWork.AddressesRepository.Insert(address);


                        room.Address   = address;
                        room.Equipment = equipment;
                        unitOfWork.RoomsRepository.Insert(room);

                        //save to db
                        unitOfWork.Complete();

                        return(RedirectToAction("DisplayRoom", new { id = room.RoomID }));
                    }
                    return(View());
                }
                catch (Exception e)
                {
                    System.Diagnostics.Debug.WriteLine("Error: " + e.Message);
                    ViewBag.Error = "Wystąpił błąd, proszę powtórzyć jeszcze raz.";
                    return(View());
                }
            }
            return(RedirectToAction("Login", "User"));
        }