/**
  * @SWG\Post(
  *     path="/mastoria",
  *     operationId="addMastori",
  *     tags={"mastoria"},
  *     description="Adds a new mastori in database",
  *     produces={"application/json"},
  *     @SWG\Parameter(
  *         name="body",
  *         in="body",
  *         required=true,
  *         @SWG\Schema(ref="#/definitions/mastoriPost")
  *     ),
  *     @SWG\Response(
  *         response=201,
  *         description="Returns created Mastori object",
  *         @SWG\Schema(ref="#/definitions/mastori")
  *     ),
  *     @SWG\Response(
  *         response="400",
  *         description="validation errors",
  *         @SWG\Schema(ref="#/definitions/validationsErrorsModel")
  *     )
  * )
  */
 public function store(Request $request)
 {
     $data = $request->all();
     $validator = $this->validator($data);
     if ($validator->fails()) {
         return response(['errors' => $validator->messages()], 400);
     }
     // store
     $mastori = new Mastori();
     $user = new User();
     $addresses = $data['addresses'];
     $professions = array_pluck($data['professions'], 'id');
     $areas = isset($data['areas']) ? array_pluck($data['areas'], 'id') : [];
     $data = array_except($data, ['password_repeat', 'addresses', 'professions']);
     $userdata = array_only($data, ['email', 'username', 'password']);
     $mastoridata = array_except($data, ['email', 'username', 'password']);
     // Encrypt password
     $userdata['password'] = bcrypt($data['password']);
     $newMastori = $mastori->create($mastoridata);
     $newUser = $user->create($userdata);
     // Insert related addresses
     foreach ($addresses as $address) {
         $newUser->addresses()->create($address);
     }
     $newMastori->user()->save($newUser);
     // Sync professions
     $newMastori->professions()->sync($professions);
     //atach areas that mastori serves
     $newMastori->areas()->sync($areas);
     return response($newMastori->load('user')->load('professions')->load('areas'), 201);
 }