= Профил на Корисник == Актери * Најавен корисник == Чекор 1 Корисникот кликнува на линкот/копчето со своето име или страницата му се прикажува по успешна најава. == Чекор 2 Системот го идентификува најавениот корисник (преку неговиот user_id) и ги вчитува основните податоци за профилот. {{{ SELECT u.user_id, u.full_name, u.email, u.phone, u.created_at FROM "User" u WHERE u.user_id = $1; }}} == Чекор 3 Системот ги вчитува улогите на корисникот од табелите UserRole и Role, за да знае кои делови од профилот и кои функционалности му се достапни. {{{ SELECT r.name FROM UserRole ur JOIN Role r ON ur.role_id = r.role_id WHERE ur.user_id = $1; }}} == Чекор 4 Системот ги вчитува сите идни закажани термини на корисникот. Системот ја користи view табелата v_user_appointments и филтрира по корисник и термин во иднина: {{{ SELECT appointment_id, to_char(appointment_time, 'YYYY-MM-DD"T"HH24:MI:SS') AS appointment_time, to_char(end_time, 'YYYY-MM-DD"T"HH24:MI:SS') AS end_time, total_price, notes, status_name, appointment_type, services FROM v_user_appointments WHERE user_id = $1 AND appointment_time >= NOW() ORDER BY appointment_time ASC; }}} Овие податоци се прикажуваат во делот „Upcoming Appointments“ на профилот. == Чекор 5 Системот ги вчитува сите минати термини на корисникот, повторно преку view табелата v_user_appointments, но со услов за термини во минатото: {{{ SELECT appointment_id, to_char(appointment_time, 'YYYY-MM-DD"T"HH24:MI:SS') AS appointment_time, to_char(end_time, 'YYYY-MM-DD"T"HH24:MI:SS') AS end_time, total_price, notes, status_name, appointment_type, services FROM v_user_appointments WHERE user_id = $1 AND appointment_time < NOW() ORDER BY appointment_time DESC; }}} Овие податоци се прикажуваат во делот „Past Appointments“. == Чекор 6 Системот ја прикажува страницата „Профил“ со: * основните информации за корисникот * листа на претстојни термини * листа на минати термини