# Profil API

[vissza az API indexhez](./index.md)

## Saját profilunk lekérdezése

`GET /api/profile` - private

Ez visszaadja a belépett user adatait:

```json
{
  "userid": 6564336,
  "company": false,
  "username": "Almakorte",
  "avatarimage": "60393a1c82a2f_x1Hc1xLe.jpg",
  "bannerimage": "",
  "adminok": 1, // 0 = pending, 1 = active, 2 = banned, 3 = has profile changes
  "passportimage": "5f2907b5b95be_autumn-972717_1920.jpg",
  "country": "DE",
  "diff_last_checked": [<string>, ...], // string-be felsorolva azok a kulcsok, amelyeket legutóbb a user módosított
  "blogname": "eeee",
  "aboutme": "",
  "cntliked": 5,
  "cntfavorite": 4,
  "cntphotos": 6,
  "cntviews": 27,
  "created_at": "2020-08-04 01:54:03",
  "first_name": "Alma",
  "last_name": "Körte",
  "datebirth": "",
  "zip": 1111,
  "city": "Budaörs",
  "address": "Ez a címem",
  "phone": "telefon",
  "email": "5@pg.com",
  "sex": "Male",
  "driverimage": "5f2907b5bf7f8_sky-49520_1920.jpg",
  "downloads": 0,
  "fullregistered": true,
  "isBlockedByMe": false,
  "amIBeingBlocked": false,
  "youfollowed": false,
  "hasService": {
    "activeForToday": <bool>, // van-e a mai napot magába foglaló aktivált service?
    "inactiveForToday": <bool>, // van-e a mai napot magába foglaló még nem aktivált service?
    "anyInactive": <bool> // van-e akármilyen service-e, ami még nincs aktiválva?
  },
  "hasBlogPosts":false,
  "sponsor": {
    "sponsorId": 495080,
    "sponsorAvatar": "60364e8259169_iwPNhRyI.jpg",
    "sponsorName": "Zolcsika3"
  },
  "in_cart": true
}
```

## Saját profilunk módosítása

`POST /api/updateprofile` - private api

body-ban FormData-ként kell elküldeni az alábbi mezőkből tetszőlegeset. ez mindig az éppen belépett user adatait fogja módosítani:

```
country: <string> - ez lehet ország rendesen kiírva is és 2 betűs ország kód is
sex: "Male"|"Female"
zip: <int>
city: <string>
address: <string>
phone: <string>
first_name: <string>
last_name: <string>
username: <string> - ha már van ilyen username, akkor hibát dob vissza a szerver
blogname: <string> - ha már van ilyen blogname, akkor hibát dob vissza a szerver
datebirth: <string>
aboutme: <string>
avatarimage: <file>
bannerimage: <file>
driverimage: <file>
passportimage: <file>
referralid: <int>
wallet_address: <string>
```

Ha nem sikerült a módosítás, vagy a mezők validálása, akkor **400**-as (BAD REQUEST) hiba jön vissza a szabványos hibaüzenet formátumban.

Sikeres módosítás esetén **200**-as (OK) válasz jön, content-nek pedig JSON objektumban a user frissült adatai

## Saját képeink engedélyezése és letiltása

`PATCH /api/profile/photo/<photoId>` - private api

raw JSON-t vár adatként:

```json
{
  "visibility": <bool>
}
```

Ha az URL-ben megadott photoId nem létező képre mutat, akkor **404**-et (NOT FOUND) ad vissza válasznak a szerver

Ha a kép nem a mi tulajdonunkban van, akkor pedig **403**-at (FORBIDDEN).

Sikeres válasz esetén **200**-as (OK) válasz jön vissza dummy tartalommal (üres objektum jelen esetben).

## Saját képeink törlése

`DELETE /api/profile/photo/<photoid>` - private api

Ha az URL-ben megadott photoId nem létező képre mutat, akkor **404**-et (NOT FOUND) ad vissza válasznak a szerver

Ha a kép nem a mi tulajdonunkban van, akkor pedig **403**-at (FORBIDDEN).

Sikeres válasz esetén **200**-as (OK) válasz jön vissza dummy tartalommal (üres objektum jelen esetben).

---

## Statisztika a user eladott képeiről

`GET /api/profile/photos/sold` - private api

_TODO_ leírni a visszaküldött adatokat

## Statisztika a user vásárolt képeiről

`GET /api/profile/photos/bought` - private api

_TODO_ leírni a visszaküldött adatokat

## Fotó letöltése

`GET /api/photo/<photoid>/download` - private api

_TODO_ leírni a visszaküldött adatokat

## Szerződés letöltése

Az alábbi összes URL-re igaz, hogy ha sikeres volt a hívás, akkor a szerver egy PDF-et ad vissza.

Ha valamelyik kritérium nem megfelelő, akkor **404**-et (NOT FOUND) dob a szerver.

### Aktiváció/Szektor vásárlásnál megvásárolandó fotókhoz tartozó minta szerződés letöltése

`GET /api/contract/preview/<locale>/<ru_id>`

A "ru_id"-t az aktiváció/szektor vásárlásnál a sevenuser-eknél és a threeuser-eknél kapjuk meg

### Saját magunk által vásárolt képek szerződésének lekérése

`GET /api/contract/view/<locale>/<photoid>`

### Mások által megvásárolt saját képeink szerződésének lekérdezése

`GET /api/contract/view/<locale>/<photoid>/<purchaser userid>`

## Alapértelmezett referral azonosítójának lekérdezése

`GET /api/profile/default-referral-id` - private api

Visszaad egy sima user id-t, ami az alapértelmezett referral id azoknak, akiknél nincs megadva referral

## Zanzásított status lekérdezése a jelenleg belépett user-hez

`GET /api/profile/status` - private api

```json
{
  "adminok": 1,
  "isFullyRegistered": true,
  "hasService": {
    "activeForToday": <bool>, // van-e a mai napot magába foglaló aktivált service?
    "inactiveForToday": <bool>, // van-e a mai napot magába foglaló még nem aktivált service?
    "anyInactive": <bool> // van-e akármilyen service-e, ami még nincs aktiválva?
  },
  "hasItemsInCart": false
}
```

Az adminok értéke az alábbi 4 lehet:

0 = pending; a user nem rég regisztrált, még várja, hogy egy admin beengedje, majdnem nincs hozzáférése semmihez, csak a profilhoz
1 = accepted; minden oké, mindenhez van hozzáférése
2 = banned; le van tiltva, nincs hozzáférése semmihez
3 = has profile changes; vannak módosításai a user-nek, kicsit kevesebb a joga, mint az accepted-nek


## Napi képfeltöltések száma

`GET /api/countphotosuploadedtoday` - private api

Ez visszaadja a napi képefeltöltések számát:

```json
{
  "countPhotosUploadedToday": 1,
}
```

## Olvastalan üzenetek

`GET /api/unviewedmessage` - private api

Ez visszaadja az olvasatlan üzenetek számát:

```json
{
  "numofunviewedmessage": 2,
}
```

## Eladásra szánt kép feltöltése

`POST /api/pupload` - private api

form-data

```
name: <string>,
description: <string>,
catid: <int>,
tag1: <string>,
tag2: <string>,
tag3: <string>,
photo: <file>
```

## Cert kép lekérése és újragenerálása

`GET /cert/<photoid>` - public api

Ez egy publikusan hívható URL, ami visszaadja a cert képét, ha létezik. Ha nem, akkor generál egyet.

`GET /cert/<photoid>?new` - public api

Ez pedig mindenképp generál egy újat

Ha nem létező photoid-t adunk meg, akkor **404**-et (NOT FOUND) kapunk vissza

## Jelszóváltoztatás

`PATCH /api/profile/change-password` - private api

Az alábbi JSON adatot várja az api:

```
{
    "currentPassword": "csirke",
    "newPassword": "pulyka",
    "newPasswordConfirm": "pulyka"
}
```

Ha minden rendben volt, akkor 200-as válasszal üres JSON objektum jön vissza, ha nem, akkor 400-as státusz mellett a szokásos normalizált hibaüzenetek
