def edit(id, scheduling): edited_scheduling = get_by_id(id) if scheduling is None: raise SchedulingException("Dados do agendamento inválidos") validate(scheduling) edited_scheduling.title = scheduling.title edited_scheduling.initial_date = scheduling.initial_date edited_scheduling.final_date = scheduling.final_date edited_scheduling.meeting_room_id = scheduling.meeting_room_id edited_scheduling.user_id = scheduling.user_id filters = { 'meetingroomid': edited_scheduling.meeting_room_id, 'initial_date': edited_scheduling.initial_date, 'final_date': edited_scheduling.final_date } existing_schedules = scheduling_rep.get_all(filters) if len([schedule for schedule in existing_schedules if schedule.id != id]): raise SchedulingException( "Já existe agendamento para o horário desejado.") db.session.commit()
def validate(meeting_room): if not meeting_room.name or len(meeting_room.name) > 100: raise SchedulingException( 'Nome da sala de reunião inválido. Não deve ser vazio, e deve conter no máximo 100 caracteres.' ) if meeting_room.description and len(meeting_room.description) > 255: raise SchedulingException( 'Descrição da sala de reunião deve conter no máximo 255 caracteres.' )
def validate(user): if not user.username or len(user.username) > 40: raise SchedulingException( 'Usuário inválido. Não deve ser vazio e deve conter no máximo 40 caracteres.' ) if not user.name or len(user.name) > 100: raise SchedulingException( 'Nome do usuário inválido. Não deve ser vazio e deve conter no máximo 100 caracteres.' )
def validate(scheduling): if not scheduling.title or len(scheduling.title) > 80: raise SchedulingException( 'Título do agendamento inválido. Não deve ser vazio, e deve conter no máximo 80 caracteres.' ) if not scheduling.initial_date: raise SchedulingException( 'É obrigatório informar a data inicial do agendamento.') if not scheduling.final_date: raise SchedulingException( 'É obrigatório informar a data final do agendamento.') if not isinstance(scheduling.initial_date, datetime.datetime): raise SchedulingException('Data inicial do agendamento inválida') if not isinstance(scheduling.final_date, datetime.datetime): raise SchedulingException('Data final do agendamento inválida') if scheduling.initial_date > scheduling.final_date: raise SchedulingException( 'Data inicial do agendamento não pode ser maior que a data final do agendamento' ) meeting_room = meeting_room_repository.get_by_id( scheduling.meeting_room_id) if (meeting_room is None): raise SchedulingException('Sala de reunião não encontrada') user = user_repository.get_by_id(scheduling.user_id) if (user is None): raise SchedulingException('Usuário não encontrado')
def get_by_id(id): user = user_repository.get_by_id(id) if user is None: raise SchedulingException('Usuário não encontrado.', 404) return user
def edit(id, user): edited_user = get_by_id(id) if user is None: raise SchedulingException("Dados do usuário inválidos") existing_user = user_repository.get_by_username(user.username) if existing_user is not None and existing_user.id != id: raise SchedulingException("Usuário já existente") validate(user) edited_user.username = user.username edited_user.name = user.name db.session.commit()
def edit(id, meeting_room): edited_meeting_room = get_by_id(id) if meeting_room is None: raise SchedulingException("Dados da sala de reunião inválidos") existing_meeting_room = meeting_room_rep.get_by_name(meeting_room.name) if existing_meeting_room is not None and existing_meeting_room.id != id: raise SchedulingException( 'Já existe uma sala de reunião com esse nome.') validate(meeting_room) edited_meeting_room.name = meeting_room.name edited_meeting_room.description = meeting_room.description db.session.commit()
def delete(id): if can_be_deleted(id): user = get_by_id(id) db.session.delete(user) db.session.commit() else: raise SchedulingException( 'Usuário não pode ser deletado pois possuí agendamentos')
def delete(id): if can_be_deleted(id): meeting_room = get_by_id(id) db.session.delete(meeting_room) db.session.commit() else: raise SchedulingException( 'Sala de reunião não pode ser deletada pois possuí agendamentos.')
def create(username, name): user = User(username, name) validate(user) existing_user = user_repository.get_by_username(user.username) if existing_user is not None: raise SchedulingException("Usuário já existente") db.session.add(user) db.session.commit()
def create(name, description): meeting_room = MeetingRoom(name, description) validate(meeting_room) existing_meeting_room = meeting_room_rep.get_by_name(meeting_room.name) if existing_meeting_room is not None: raise SchedulingException( 'Já existe uma sala de reunião com esse nome.') db.session.add(meeting_room) db.session.commit()
def create(title, initial_date, final_date, id_meeting_room, id_user): scheduling = Scheduling(title, initial_date, final_date, id_meeting_room, id_user) validate(scheduling) filters = { 'meetingroomid': scheduling.meeting_room_id, 'initial_date': scheduling.initial_date, 'final_date': scheduling.final_date } existing_schedules = scheduling_rep.get_all(filters) if len(existing_schedules) > 0: raise SchedulingException( "Já existe agendamento para o horário desejado.") db.session.add(scheduling) db.session.commit()
def get_by_id(id): scheduling = scheduling_rep.get_by_id(id) if not scheduling: raise SchedulingException('Agendamento não encontrado.', 404) return scheduling
def get_by_id(id): meeting_room = meeting_room_rep.get_by_id(id) if not meeting_room: raise SchedulingException('Sala de reunião não encontrada.', 404) return meeting_room