public async Task <GenericObjectResponse <RoomResponse> > AddRoom([FromBody] CreateRoomPayload payload)
        {
            long?userId = AuthenticationService.IsAuthorized(Request, UserRole.RoomOwner);

            if (userId == null)
            {
                Response.StatusCode = 401;
                return(new GenericObjectResponse <RoomResponse>(""));
            }

            RoomManipulationService service = new RoomManipulationService();
            GenericObjectResponse <RoomResponse> response = await service.AddRoom(payload, userId);

            if (!response.Status.Success)
            {
                Response.StatusCode = 400;
            }

            return(response);
        }
        public override void Up()
        {
            UserManipulationService userManipulationService = new UserManipulationService();
            CreateUserPayload       owner = new CreateUserPayload
            {
                FirstName       = "Ron",
                LastName        = "Shachar",
                Country         = "Israel",
                City            = "Tel Aviv",
                Street          = "Rambam",
                BuildingNumber  = 6,
                Password        = "******",
                ConfirmPassword = "******",
                Username        = "******"
            };

            userManipulationService.AddUser(owner, UserRole.RoomOwner);
            long ownerId = 0;

            using (ReservationDataContext context = new ReservationDataContext())
            {
                ownerId = context.Users.Single(x => x.Username == "*****@*****.**").Id;
            }

            RoomManipulationService roomManipulationService = new RoomManipulationService();
            CreateRoomPayload       roomPayload             = new CreateRoomPayload
            {
                Name           = "Globo Gym",
                Country        = "Israel",
                City           = "Givatayim",
                Street         = "Borochov",
                BuildingNumber = 5,
                IsActive       = true,
                WorkingHours   = CreateDefaultWorkingHours(Days.Sunday, Days.Tuesday, Days.Thursday)
            };

            roomManipulationService.AddRoom(roomPayload, ownerId);
        }
        public async Task <GenericObjectResponse <RoomResponse> > ChangeRoomData([FromBody] CreateRoomPayload payload, long roomId)
        {
            long?userId = AuthenticationService.IsAuthorized(Request, UserRole.RoomOwner);

            if (userId == null)
            {
                Response.StatusCode = 401;
                return(new GenericObjectResponse <RoomResponse>(""));
            }

            RoomValidationService roomValidationService = new RoomValidationService();
            GenericStatusMessage  roomExistsValidation  = roomValidationService.ValidateRoomExistsAndOwnedByUser(roomId, userId.Value);

            if (!roomExistsValidation.Success)
            {
                Response.StatusCode = 404;
                return(new GenericObjectResponse <RoomResponse>("Not found."));
            }

            RoomManipulationService roomManipulationService = new RoomManipulationService();

            return(await roomManipulationService.ChangeRoomData(payload, roomId));
        }
        private GenericStatusMessage ChangeRoomActivation(long roomId, bool activate, bool force = false)
        {
            long?userId = AuthenticationService.IsAuthorized(Request, UserRole.RoomOwner);

            if (userId == null)
            {
                Response.StatusCode = 401;
                return(new GenericStatusMessage(false, ""));
            }

            RoomValidationService roomValidationService = new RoomValidationService();
            GenericStatusMessage  roomExistsValidation  = roomValidationService.ValidateRoomExistsAndOwnedByUser(roomId, userId.Value);

            if (!roomExistsValidation.Success)
            {
                Response.StatusCode = 404;
                return(new GenericStatusMessage(false, "Not found."));
            }

            RoomManipulationService roomManipulationService = new RoomManipulationService();

            return(roomManipulationService.ChangeRoomActivation(roomId, activate, force));
        }