Added capability to merge organisations
- Added an interface for organisation - Added beforeDelete and beforeMerge callbacks - Added hard/soft delete to organisations
This commit is contained in:
85
src/Database/Models/Interfaces/OrganisationInterface.php
Normal file
85
src/Database/Models/Interfaces/OrganisationInterface.php
Normal file
@@ -0,0 +1,85 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* AVSDev UF Organisations (https://avsdev.uk)
|
||||
*
|
||||
* @link https://git.avsdev.uk/avsdev/sprinkle-organisations
|
||||
* @license https://git.avsdev.uk/avsdev/sprinkle-organisations/blob/master/LICENSE.md (LGPL-3.0 License)
|
||||
*/
|
||||
|
||||
namespace UserFrosting\Sprinkle\Organisations\Database\Models\Interfaces;
|
||||
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
|
||||
/**
|
||||
* Organisation Interface.
|
||||
*
|
||||
* Represents a Organisation object as stored in the database.
|
||||
*/
|
||||
interface OrganisationInterface
|
||||
{
|
||||
/**
|
||||
* Get a count of members within this organisation (includes admins).
|
||||
*
|
||||
* @return integer The number of members within the organisation.
|
||||
*/
|
||||
public function getMemberCountAttribute();
|
||||
|
||||
/**
|
||||
* Get a count of administrators within this organisation.
|
||||
*
|
||||
* @return integer The number of admins within the organisation.
|
||||
*/
|
||||
public function getAdminCountAttribute();
|
||||
|
||||
/**
|
||||
* Get a count of members within this organisation (excludes admins).
|
||||
*
|
||||
* @return integer The number of members within the organisation.
|
||||
*/
|
||||
public function getTotalMemberCountAttribute();
|
||||
|
||||
/**
|
||||
* Delete this organisation from the database, along with any linked objects.
|
||||
*
|
||||
* @param bool $hardDelete Set to true to completely remove the organisation and all associated objects.
|
||||
*
|
||||
* @return bool true if the deletion was successful, false otherwise.
|
||||
*/
|
||||
public function delete($hardDelete = false);
|
||||
|
||||
/**
|
||||
* Return this organisations's members.
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
*/
|
||||
public function members();
|
||||
|
||||
/**
|
||||
* Return this organisations's admins.
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
*/
|
||||
public function administrators();
|
||||
|
||||
/**
|
||||
* Performs tasks to be done before an organisation is merged
|
||||
*
|
||||
* By default, adds a new sign-in activity and updates any legacy hash.
|
||||
*
|
||||
* @param OrganisationInterface $target The organisation that will be merged towards.
|
||||
* @param mixed[] $params Optional array of parameters used for this event handler.
|
||||
*
|
||||
* @todo Transition to Laravel Event dispatcher to handle this
|
||||
*/
|
||||
public function beforeMerge($target, $params = []);
|
||||
|
||||
/**
|
||||
* Joins the organisation's member count, so we can do things like sort, search, paginate, etc.
|
||||
*
|
||||
* @param Builder $query
|
||||
*
|
||||
* @return Builder
|
||||
*/
|
||||
public function scopeJoinMemberCounts($query);
|
||||
}
|
||||
Reference in New Issue
Block a user