<?php
namespace App\AtechNet\CoreBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping\Column;
use Doctrine\ORM\Mapping\Entity;
use Doctrine\ORM\Mapping\HasLifecycleCallbacks;
use Doctrine\ORM\Mapping\JoinColumn;
use Doctrine\ORM\Mapping\JoinTable;
use Doctrine\ORM\Mapping\ManyToMany;
use Doctrine\ORM\Mapping\OneToMany;
use Doctrine\ORM\Mapping\OneToOne;
use Doctrine\ORM\Mapping\OrderBy;
use Doctrine\ORM\Mapping\Table as Table;
use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
use Symfony\Component\Security\Core\User\UserInterface;
/**
* @Table(name="users")
* @Entity(repositoryClass="App\AtechNet\CoreBundle\Repository\UserRepository")
* @HasLifecycleCallbacks
*/
class User extends AbstractSignedEntity implements UserInterface, PasswordAuthenticatedUserInterface
{
public const MENU_CACHE_KEY_PREFIX = 'navigation.v2';
public const string Type_SuperAdmin = 'superAdmin';
public const string Type_Admin = 'admin';
public const string Type_User = 'user';
public const string Type_Employee = 'employee';
public const string MODULE_ORDER = 'module_order';
public const string MODULE_BASKET = 'module_basket';
public const string MODULE_PRODUCT = 'module_product';
public const string MODULE_CUSTOMER = 'module_customer';
public const string MODULE_DOCUMENT = 'module_document';
public const string MODULE_STOCK = 'module_stock';
public const string MODULE_STOCK_MOVEMENT = 'module_stock_movement';
public const string MODULE_STOCK_ITEM = 'module_stock_item';
public const string MODULE_STATISTIC = 'module_statistic';
public const string MODULE_TASK = 'module_task';
public const string MODULE_FAQ = 'module_faq';
public const string MODULE_CLAIM = 'module_claim';
public const string MODULE_USER = 'module_user';
public const string MODULE_USER_DEPARTMENT = 'module_user_department';
public const string MODULE_MARKETING_TOOLS = 'module_marketing_tools';
public const string MODULE_OTHER = 'module_other';
public const string MODULE_SHORTCUT = 'module_shortcut';
public const string MODULE_CENTRALIS_SETTINGS = 'module_centralis_settings';
//Basic permissions
public const string PERMISSION_LIST = 'l';
public const string PERMISSION_CREATE = 'c';
public const string PERMISSION_READ = 'r';
public const string PERMISSION_UPDATE = 'u';
public const string PERMISSION_DELETE = 'd';
//Order module permissions
public const string PERMISSION_STATS = 'stats';
public const string PERMISSION_BASKET = 'basket';
public const string PERMISSION_PACKAGE_HANDOVER = 'package-handover';
public const string PERMISSION_COMMISSION = 'commission';
public const string PERMISSION_COMMISSION_CONFIRMATION_MAIL = 'commission-confirmation-mail';
public const string PERMISSION_QUANTITY = 'sold-quantity';
public const string PERMISSION_AMAZON_IMPORT = 'amazon-import';
public const string PERMISSION_BACKMARKET_IMPORT = 'backmarket-import';
public const string PERMISSION_REFURBED_IMPORT = 'refurbed-import';
public const string PERMISSION_PRODUCT_MODEL_CONNECTED_PRODUCT_IMPORT = "product-model-connected-product-import";
public const string PERMISSION_CLAIM_FROM_ORDER = 'claim-from-order';
public const string PERMISSION_CLAIM_CREATE_LABEL = 'claim-create-label';
public const string PERMISSION_WITHDRAWAL_FROM_ORDER = 'withdrawal-from-order';
public const string PERMISSION_ORDER_PROFIT = 'order-profit';
public const string PERMISSION_ORDER_EXPORT = 'order-export';
public const string PERMISSION_ORDER_SALES_EXPORT = 'order-sales-export';
public const string PERMISSION_DEBIT_CARD_EXPORT = 'debit-card-export';
public const string PERMISSION_ORDER_STATUS = 'order-status';
public const string PERMISSION_BILLINGO_PANEL = 'billingo-panel';
public const string PERMISSION_PAYMENT_METHOD = 'payment-method';
public const string PERMISSION_SHIPPING_METHOD = 'shipping-method';
public const string PERMISSION_PICKUP_POINT = 'pickup-point';
public const string PERMISSION_SET_PRIORITY = 'set-priority';
public const string PERMISSION_ARTISJUS_LABEL_EXPORT = 'artisjus-label-export';
public const string PERMISSION_MARKETPLACE_API = 'marketplace-managing-api';
public const string PERMISSION_ORDER_PROCESSING = 'order-processing-lock';
public const string PERMISSION_ORDER_PAID_ORDER_PRICE_EDITOR = 'order-paid-order-price-editor';
public const string PERMISSION_ORDER_PASTPAY_RESERVATION_SYNC = 'order-pastpay-reservation-sync';
public const string PERMISSION_PROCESSING_DASHBOARD = 'processing-dashboard';
public const string PERMISSION_PRODUCTION_STATION_EDITOR = 'production-station-editor';
public const string PERMISSION_USE_PURCHASE_PRICE = 'use-purchase-price';
public const string PERMISSION_ORDER_MANAGE_ORDER_BY = 'order-manage-order-by';
public const string PERMISSION_DOCUMENT_MOVEMENT_REMOVE = 'document-movement-remove';
public const string PERMISSION_DOCUMENT_MOVEMENT_ADD = 'document-movement-add';
//Product module permissions
public const string PERMISSION_OLD_ITEMS = 'old-items';
public const string PERMISSION_PRODUCT_EXPORT = 'product-export';
public const string PERMISSION_PRICE_IMPORT = 'price-import';
public const string PERMISSION_MARGIN_IMPORT = 'margin-import';
public const string PERMISSION_PRODUCT_STOCK_MOVEMENTS = 'product-stock-movements';
public const string PERMISSION_PRODUCT_PURCHASE_PRICES = 'product-purchase-prices';
public const string PERMISSION_PRODUCT_STATISTICS = 'product-statistics';
public const string PERMISSION_PRODUCT_DUPLICATE = 'product-duplicate';
public const string PERMISSION_PRODUCT_SPARE_PARTS = 'product-spare-parts';
public const string PERMISSION_SUPPLIER_NAME = 'product-supplier-name';
public const string PERMISSION_ATTRIBUTES = 'product-attributes';
public const string PERMISSION_VENDOR = 'vendor';
public const string PERMISSION_PRODUCT_PRICE_MONITOR = 'product-price-monitor';
public const string PERMISSION_PRODUCT_EXPORT_VIEW = 'product-export-view';
public const string PERMISSION_GENERATE_PRODUCT_OFFER_EMAIL = 'generate-product-offer-email';
public const string PERMISSION_PRODUCT_DOMAIN = 'product-domain';
public const string PERMISSION_UPLOAD_IMAGES_FOR_STOCK_ITEMS = 'upload-images-for-stock-items';
public const string PERMISSION_PRODUCT_LAST_SALE = 'product-last-sell';
public const string PERMISSION_EXPORT_NOT_LISTED_PRODUCT = 'export-not-listed-product';
public const string PERMISSION_EXPORT_QUARANTINE_SERIALS = 'export-quarantine-serials';
public const string PERMISSION_EXPORT_NOTEBOOK_PARTS_FROM_SHIPMENTS = 'export-notebook-parts-from-shipments';
public const string PERMISSION_EXPORT_SHIPMENTS = 'export-shipments';
public const string PERMISSION_SET_ARCHIVED_SETTING = 'set-archived-setting';
public const string PERMISSION_PRODUCT_MODEL = 'product-model';
public const string PERMISSION_PRODUCT_VARIATION = 'product-variation';
public const string PERMISSION_PRODUCT_EXPORT_PAYMENT_STATS = 'product-export-payment-stats';
//Customer module permissions
public const string PERMISSION_CUSTOMER_FEED_LIST = 'customer-feed-list';
public const string PERMISSION_ROUTE_PLANNER = 'route-planner';
public const string PERMISSION_PAYMENT_APPROVER = 'payment-approver';
public const string PERMISSION_PHONE_NUMBERS_EXPORT = 'phone-number-export';
public const string PERMISSION_ADMIN_LOGIN_USAGE = 'admin-login-panel-usage';
public const string PERMISSION_DEFAULT_DUE_DAYS_CHANGE = 'default-due-days-change';
public const string PERMISSION_CUSTOMER_PAYMENT_METHOD = 'customer-payment-method';
public const string PERMISSION_CUSTOMER_CALLBACK = 'customer-callback';
//Document module permissions
public const string PERMISSION_COMMITMENTS_RECEIVABLES_EXPORT = 'commitments-receivables-export';
public const string PERMISSION_ARTISJUS_PRODUCT_EXPORT = 'artisjus-product-export';
public const string PERMISSION_DOCUMENT_EXPORT = 'document-export';
public const string PERMISSION_BILLINGO_DOCUMENTS = 'billingo-documents';
public const string PERMISSION_POHODA_EXPORT = 'pohoda-export';
public const string PERMISSION_SOLD_GOODS_FROM_SK_TO_HU = 'sold-goods-from-sk-to-hu';
public const string PERMISSION_EXCHANGE_RATES = 'exchange-rates';
public const string PERMISSION_PAYMENTS = 'payments';
public const string PERMISSION_DOCUMENT_GROUPS = 'document-groups';
public const string PERMISSION_INVOICE_IN_TYPE = 'invoice-in-type';
public const string PERMISSION_PAYMENT_ADD = 'payment-add';
public const string PERMISSION_UPDATE_LOCKED_INVOICE = 'update-locked-invoice';
public const string PERMISSION_FOREIGN_SALES_EXPORT = 'foreign-sales-export';
public const string PERMISSION_CREDIT_NOTE_CREATE_MOVEMENT = 'credit-note-create-movement';
public const string PERMISSION_IN_DOCUMENT_NEXT_IT = 'in-document-next-it';
public const string PERMISSION_CREATE_CREDIT_NOTE = 'create-credit-note';
//Stock movement module permissions
public const string PERMISSION_IN_PRODUCTION_EXPORT = 'in-production-export';
public const string PERMISSION_STOCK_REVIEW = 'stock-review';
public const string PERMISSION_STOCK_REVIEW_DELETE = 'stock-review-delete';
public const string PERMISSION_STOCK_REVIEW_CLOSE = 'stock-review-close';
public const string PERMISSION_CORRECTIVE_MOVEMENT_CREATE = 'corrective-movement-create';
public const string PERMISSION_CREATE_DATE_EDIT = 'create-date-edit';
public const string PERMISSION_STOCK_MOVEMENT_LOGS = 'stock-movement-logs';
public const string PERMISSION_STOCK_MOVEMENT_LOCK_ALL = 'stock-movement-lock-all';
public const string PERMISSION_STOCK_MOVEMENT_LOCK_CONFIG_CHANGE = 'stock-movement-lock-config-change';
public const string PERMISSION_STOCK_MOVEMENT_LOCK_IN_BASIC = 'stock-movement-lock-in-basic';
public const string PERMISSION_STOCK_MOVEMENT_CHANGE_PRODUCTION_STATUS = 'stock-movement-change-production-status';
public const string PERMISSION_STOCK_POSITION_LABEL_PRINT = 'stock-position-label-print';
public const string PERMISSION_STOCK_MOVEMENT_ONLY_SCAN_STOCK_ITEMS = 'stock-movement-only-scan-stock-items';
public const string PERMISSION_STOCK_MOVEMENT_IN_UPDATED_ROWS = 'stock-movement-in-updated-rows';
public const string PERMISSION_STOCK_MOVEMENT_STOCK_REQUEST_ADMIN = 'stock-movement-stock-request-admin';
public const string PERMISSION_STOCK_MOVEMENT_CREATE_IN_PRODUCTION_MOVEMENT = 'stock-movement-create-in-product_movement';
public const string PERMISSION_STOCK_MOVEMENT_SERVICE_CONFIG_CHANGE = 'stock-movement-service-config-change';
public const string PERMISSION_STOCK_MOVEMENT_EXPORT_ALL = 'stock-movement-export-all';
public const string PERMISSION_STOCK_MOVEMENT_EXPORT_SHIPMENT_ITEM = 'stock-movement-export-shipment-item';
public const string PERMISSION_STOCK_MOVEMENT_CHANGE_CREDIT_NOTE_PRICES = 'stock-movement-change-credit-note';
public const string PERMISSION_STOCK_MOVEMENT_SHIPMENTS = 'stock-movement-shipments';
public const string PERMISSION_STOCK_MOVEMENT_CHANGE_SUBTYPE = 'stock-movement-change-subtype';
public const string PERMISSION_STOCK_MOVEMENT_GODMODE_EDIT = 'stock-movement-godmode-edit';
public const string PERMISSION_STOCK_MOVEMENT_SERVICE_NEUTRAl_SUBTYPE_CHANGE = 'stock-movement-service-neutral-subtype-change';
public const string PERMISSION_WANTED_ITEMS_LIST = 'wanted-items-list';
public const string PERMISSION_WANTED_ITEMS_EDIT_FROM_LIST = 'wanted-items-edit-from-list';
public const string PERMISSION_WANTED_ITEM_DELETE = 'wanted-item-delete';
//Stock item module permissions
public const string PERMISSION_GROUP_LABEL_PRINT = 'group-label-print';
public const string PERMISSION_POSITIONING = 'positioning';
public const string PERMISSION_TEMPORARY_STOCK_POSITIONS = 'temporary-stock-positions';
public const string PERMISSION_SET_POSITION_TO_KISZOLGALAS = 'set-position-to-kiszolgalas';
// Stock module permissions
public const string PERMISSION_STOCK_POSITION = 'stock-position';
//Statistic module permissions
public const string PERMISSION_INCOME_STATISTIC = 'income-statistic';
public const string PERMISSION_SALES_MANAGER_STATISTIC = 'sales-manager-statistic';
public const string PERMISSION_SALES_MANAGER_PARTNER_STATISTIC = 'sales-manager-partner-statistic';
public const string PERMISSION_EXPORT_SALES_MANAGER_STATISTIC = 'export-sales-manager-statistic';
public const string PERMISSION_STOCK_MOVEMENTS_STATISTIC = 'stock-movements-statistic';
public const string PERMISSION_STOCK_STATUS_STATISTIC = 'stock-status-statistic';
public const string PERMISSION_COMMITMENTS_RECEIVABLES_STATISTIC = 'commitments-receivables-statistic';
public const string PERMISSION_DAYS_IN_STOCK_STATISTIC = 'days-in-stock-statistic';
public const string PERMISSION_QUALITY_STATUS_STATISTIC = 'quality-status-statistic';
public const string PERMISSION_PRODUCTS_STATISTIC = 'products-statistic';
public const string PERMISSION_PRODUCT_SALES_STATISTIC = 'product-sales-statistic';
public const string PERMISSION_SALES_MANAGER_INCOME_TURNOVER = 'sales-manager-income-turnover';
public const string PERMISSION_CUSTOMERS_STATISTIC = 'customers-statistic';
public const string PERMISSION_ONLINE_STOCK_STATISTIC = 'online-stock-statistic';
public const string PERMISSION_GUESTS_STATISTIC = 'guest-statistic';
public const string PERMISSION_OLD_STOCK_ITEM_STATISTIC = 'old-stock-item-statistic';
public const string PERMISSION_STATISTIC_CREDIT_NOTE_VALUES = 'credit-note-statistic';
public const string PERMISSION_CLAIM_STATISTIC = 'claim-statistic';
public const string PERMISSION_ORDER_STATUS_CHANGELOG_STATISTIC = 'order-status-changelog-statistic';
public const string PERMISSION_ORDER_PRODUCT_CHANGELOG_STATISTIC = 'order-product-changelog-statistic';
public const string PERMISSION_ORDER_ERROR_COMMENT_STATISTIC = 'order-error-commment-statistic';
public const string PERMISSION_PACKAGES = 'packages-statistic';
public const string PERMISSION_STATISTIC_STOCK_POSITION = 'stock-position-statistic';
public const string PERMISSION_STATISTIC_STOCK_REQUEST_TIMES = 'stock-request-times-statistic';
public const string PERMISSION_RAKTAR_AND_KALODA_STATISTIC = 'raktar-and-kaloda-statistic';
public const string PERMISSION_MARKETPLACE_LISTINGS = 'marketplace-listing-statistic';
public const string PERMISSION_PROCESSING_STATISTIC = 'processing-statistic';
public const string PERMISSION_NOTEBOOK_BATTERY_SKIN_STATISTICS = 'notebook-battery-skin-statistics';
//User module permissions
public const string PERMISSION_PERMISSION_LIST = 'permission-list';
public const string PERMISSION_PERMISSION_GROUPS = 'permission-groups';
public const string PERMISSION_PERMISSION_CHANGELOG = 'permission-changelog';
public const string PERMISSION_MEAL_ORDERING = 'meal-ordering';
public const string PERMISSION_MEAL_CREDIT_RECHARGE = 'meal-credit-recharge';
public const string PERMISSION_DELETE_USER_ABSENCE = 'delete-user-absence';
public const string PERMISSION_USER_ABSENCE_STATISTICS = 'user-absence-statistics';
//Marketing tools module permissions
public const string PERMISSION_EDITING_PAGES = 'editing-pages';
public const string PERMISSION_BANNER = 'banner';
public const string PERMISSION_NANOBAR = 'nanobar';
public const string PERMISSION_PRODUCT_GROUPS = 'product-groups';
public const string PERMISSION_PRODUCT_TAGS = 'product-tags';
public const string PERMISSION_JOBS = 'jobs';
public const string PERMISSION_REVIEWS = 'reviews';
public const string PERMISSION_SURVEYS = 'surveys';
public const string PERMISSION_COUPONS = 'coupons';
public const string PERMISSION_NAVIGATION = 'navigation';
public const string PERMISSION_SEARCH_ENGINE = 'search-engine';
//Other module permissions
public const string PERMISSION_TRANSLATIONS = 'translations';
public const string PERMISSION_UPLOAD_FILE = 'upload-file';
public const string PERMISSION_INTERNAL_NEWS = 'internal-news';
public const string PERMISSION_AUTOMATIZATIONS = 'automatizations';
public const string PERMISSION_ERROR_CODES = 'error-codes';
public const string PERMISSION_ACCESS_LOG = 'access-log';
public const string PERMISSION_SHORTCUT = 'shortcut';
public const string PERMISSION_INTERNAL_JOBS = 'internal-jobs';
public const string PERMISSION_SHOW_FORCE_SAVING_LIST = 'show-force-saving-list';
public const string PERMISSION_UNAS_CHATGPT_TRANSLATION = 'user-chatgpt-translation';
public const string PERMISSION_KLAVIYO_CAMPAIGNS = 'marketing-klaviyo-campaigns';
// Birthday visibility choices
public const int BIRTHDAY_VISIBILITY_ALL = 0;
public const int BIRTHDAY_VISIBILITY_WITHOUT_YEAR = 1;
public const int BIRTHDAY_VISIBILITY_HIDDEN = 2;
public const int CENTRALIS_USER_ID = 40;
public const int HUN_ACCOUNTANT_ID = 210;
public const string USER_GROUP_E_COMMERCE_CUSTOMER_SERVICE = 'customer-service-g';
public const array USER_GROUP_E_COMMERCE_CUSTOMER_SERVICE_USERS = [
68, 363, 395, 408, 411,
];
public const string USER_GROUP_FINANCE = 'finance-team-g';
public const array USER_GROUP_FINANCE_USERS = [
//Denisa Száraz Ruzsíková, Anikó Marosi, Viktória Tóthová, Mónika Vajai, Edina Pálová Vlčanová
23, 89, 139, 222, 249,
];
public const int USER_ID_IMRICH_ZUBER = 6;
public const int USER_ID_MARTIN_RIECICIAR = 228;
public const int USER_ID_BEATA_SEDLAROVA = 242;
public const int USER_ID_GERHARD_SZABO = 127;
public const int USER_ID_USED_IN_COMPANY = 66055;
public const int USER_ID_ROLAND_TOTH = 45;
public const int USER_ID_B2B_HU = 6;
public const int USER_ID_B2B_CZ = 311;
public const int USER_ID_B2B_SK = 312;
public const int USER_ID_MEDIA_MARKT = 413;
public const int USER_ID_NORBERT_PINKE = 34;
public const int USER_ID_LASZLO_SZABO = 27;
public const int USER_ID_EX_PORT = 303;
public const int USER_ID_TAMAS_CSONTOS = 261;
public const int USER_ID_KATARINA_JOBBAGYOVA = 57;
public const int USER_ID_FANNI_ARGYUSIOVA = 58;
public const int USER_ID_PATRIK_IVAN = 88;
public const int USER_ID_UNAS = 373;
public const int USER_ID_MEDIAMARKT = 413;
public const int USER_ID_PC_COMPONENTES = 418;
public const string PERMISSION_ORDER_STATUS_ALL = 'order-status-all';
public const string PERMISSION_ORDER_STATUS_SALES = 'order-status-sales';
public const string PERMISSION_ORDER_STATUS_PRODUCTION = 'order-status-production';
/**
* @return array
*/
public static function getRoleChoices(): array
{
return [
self::Type_SuperAdmin => self::Type_SuperAdmin,
self::Type_Admin => self::Type_Admin,
self::Type_User => self::Type_User,
self::Type_Employee => self::Type_Employee,
];
}
/**
* @return array
*/
public static function getPermissionModules(): array
{
return [
self::MODULE_ORDER => 'Order',
self::MODULE_BASKET => 'Basket',
self::MODULE_PRODUCT => 'Product',
self::MODULE_CUSTOMER => 'Customer',
self::MODULE_DOCUMENT => 'Document',
self::MODULE_STOCK => 'Stock',
self::MODULE_STOCK_MOVEMENT => 'Stock movement',
self::MODULE_STOCK_ITEM => 'Stock item',
self::MODULE_STATISTIC => 'Statistic',
self::MODULE_TASK => 'Task',
self::MODULE_FAQ => 'Knowledge base',
self::MODULE_CLAIM => 'Claim',
self::MODULE_USER => 'User',
self::MODULE_USER_DEPARTMENT => 'Department',
self::MODULE_MARKETING_TOOLS => 'Marketing tools',
self::MODULE_SHORTCUT => 'Shortcut',
self::MODULE_OTHER => 'Other',
self::MODULE_CENTRALIS_SETTINGS => 'Centralis settings'
];
}
/**
* @return array
*/
public static function getPermissionsByModules(): array
{
$modules = [];
foreach (self::getPermissionModules() as $module => $name) {
$modules[$module]['name'] = $name;
$modules[$module]['permissions'] = self::getPermissionsForModule($module);
}
return $modules;
}
/**
* @param string $module
*
* @return array
*/
public static function getPermissionsForModule(string $module): array
{
$permissions = [];
if (in_array($module, array_keys(self::getPermissionModules()))) {
if (
$module !== self::MODULE_STATISTIC &&
$module !== self::MODULE_MARKETING_TOOLS &&
$module !== self::MODULE_OTHER
) {
$permissions = [
self::PERMISSION_LIST => 'List',
self::PERMISSION_CREATE => 'Create',
self::PERMISSION_READ => 'Read',
self::PERMISSION_UPDATE => 'Update',
self::PERMISSION_DELETE => 'Delete',
];
}
//Additional permissions for modules beside basic permissions
switch ($module) {
case self::MODULE_ORDER:
$permissions[self::PERMISSION_ORDER_STATUS_ALL] = 'Order all statuses';
$permissions[self::PERMISSION_ORDER_STATUS_SALES] = 'Order sales statuses';
$permissions[self::PERMISSION_ORDER_STATUS_PRODUCTION] = 'Order production statuses';
$permissions[self::PERMISSION_STATS] = 'Statistics';
$permissions[self::PERMISSION_BASKET] = 'Basket';
$permissions[self::PERMISSION_PACKAGE_HANDOVER] = 'Package handover';
$permissions[self::PERMISSION_COMMISSION] = 'Commission';
$permissions[self::PERMISSION_COMMISSION_CONFIRMATION_MAIL] = 'Send commission confirmation mail';
$permissions[self::PERMISSION_QUANTITY] = 'Sold quantity';
$permissions[self::PERMISSION_AMAZON_IMPORT] = 'Amazon import';
$permissions[self::PERMISSION_BACKMARKET_IMPORT] = 'Back Market import';
$permissions[self::PERMISSION_REFURBED_IMPORT] = 'Refurbed import';
$permissions[self::PERMISSION_CLAIM_FROM_ORDER] = 'Claim from order';
$permissions[self::PERMISSION_WITHDRAWAL_FROM_ORDER] = 'Withdrawal from order';
$permissions[self::PERMISSION_ORDER_PROFIT] = 'Order profit';
$permissions[self::PERMISSION_ORDER_EXPORT] = 'Export';
$permissions[self::PERMISSION_ORDER_SALES_EXPORT] = 'Order status export';
$permissions[self::PERMISSION_DEBIT_CARD_EXPORT] = 'Debit card export';
$permissions[self::PERMISSION_ORDER_STATUS] = 'Order status change';
$permissions[self::PERMISSION_BILLINGO_PANEL] = 'Show billingo payment panel';
$permissions[self::PERMISSION_PAYMENT_METHOD] = 'Menage payment methods';
$permissions[self::PERMISSION_SHIPPING_METHOD] = 'Menage shipping methods';
$permissions[self::PERMISSION_PICKUP_POINT] = 'Pickup point';
$permissions[self::PERMISSION_SET_PRIORITY] = 'Set orders priority';
$permissions[self::PERMISSION_ARTISJUS_LABEL_EXPORT] = 'Artisjus label export';
$permissions[self::PERMISSION_MARKETPLACE_API] = 'Marketplace API';
$permissions[self::PERMISSION_ORDER_PROCESSING] = 'Allow edit for processing & processable orders';
$permissions[self::PERMISSION_SET_POSITION_TO_KISZOLGALAS] = 'Set positions to kiszolgalas';
$permissions[self::PERMISSION_ORDER_PAID_ORDER_PRICE_EDITOR] = 'Order price edit good mode';
$permissions[self::PERMISSION_ORDER_PASTPAY_RESERVATION_SYNC] = 'Pastpay reservation sync';
$permissions[self::PERMISSION_PROCESSING_DASHBOARD] = 'Processing dashboard';
$permissions[self::PERMISSION_PRODUCTION_STATION_EDITOR] = 'Production Station Editor';
$permissions[self::PERMISSION_SHOW_FORCE_SAVING_LIST] = 'Force saving list';
$permissions[self::PERMISSION_USE_PURCHASE_PRICE] = 'Use purchase prices for order';
$permissions[self::PERMISSION_ORDER_MANAGE_ORDER_BY] = 'Manage order by';
break;
case self::MODULE_PRODUCT:
$permissions[self::PERMISSION_OLD_ITEMS] = 'Old items on stock';
$permissions[self::PERMISSION_PRODUCT_EXPORT] = 'Export';
$permissions[self::PERMISSION_PRICE_IMPORT] = 'Product price import';
$permissions[self::PERMISSION_PRODUCT_STOCK_MOVEMENTS] = 'Stock movements';
$permissions[self::PERMISSION_PRODUCT_PURCHASE_PRICES] = 'Purchase prices';
$permissions[self::PERMISSION_PRODUCT_STATISTICS] = 'Statistics';
$permissions[self::PERMISSION_PRODUCT_DUPLICATE] = 'Duplicate';
$permissions[self::PERMISSION_SUPPLIER_NAME] = 'Supplier name';
$permissions[self::PERMISSION_ATTRIBUTES] = 'Attributes';
$permissions[self::PERMISSION_VENDOR] = 'Vendor';
$permissions[self::PERMISSION_PRODUCT_PRICE_MONITOR] = 'Price monitor';
$permissions[self::PERMISSION_PRODUCT_DOMAIN] = 'Visible domains';
$permissions[self::PERMISSION_PRODUCT_EXPORT_VIEW] = 'Product export by centralis codes';
$permissions[self::PERMISSION_GENERATE_PRODUCT_OFFER_EMAIL] = 'Product offer email generate';
$permissions[self::PERMISSION_UPLOAD_IMAGES_FOR_STOCK_ITEMS] = 'Upload images for stock items';
$permissions[self::PERMISSION_PRODUCT_LAST_SALE] = 'Last sell of product';
$permissions[self::PERMISSION_EXPORT_NOT_LISTED_PRODUCT] = 'Export not listed products';
$permissions[self::PERMISSION_SET_ARCHIVED_SETTING] = 'Set archived setting';
$permissions[self::PERMISSION_EXPORT_QUARANTINE_SERIALS] = 'Export quarantine serial numbers';
$permissions[self::PERMISSION_EXPORT_NOTEBOOK_PARTS_FROM_SHIPMENTS] = 'Export notebook from shipments';
$permissions[self::PERMISSION_PRODUCT_MODEL] = 'Product model';
$permissions[self::PERMISSION_PRODUCT_VARIATION] = 'Product variations';
$permissions[self::PERMISSION_PRODUCT_SPARE_PARTS] = 'Spare parts list';
$permissions[self::PERMISSION_MARGIN_IMPORT] = 'Product margin level import';
$permissions[self::PERMISSION_PRODUCT_EXPORT_PAYMENT_STATS] = 'Product export payment stats';
$permissions[self::PERMISSION_PRODUCT_MODEL_CONNECTED_PRODUCT_IMPORT] = "Product model connected product import";
break;
case self::MODULE_CUSTOMER:
$permissions[self::PERMISSION_CUSTOMER_FEED_LIST] = 'Feed list';
$permissions[self::PERMISSION_ROUTE_PLANNER] = 'Route planner';
$permissions[self::PERMISSION_PAYMENT_APPROVER] = 'Payment approver';
$permissions[self::PERMISSION_PHONE_NUMBERS_EXPORT] = 'Phone numbers export';
$permissions[self::PERMISSION_ADMIN_LOGIN_USAGE] = 'Admin Login usage';
$permissions[self::PERMISSION_DEFAULT_DUE_DAYS_CHANGE] = 'Default due days change';
$permissions[self::PERMISSION_CUSTOMER_PAYMENT_METHOD] = 'Menage payment methods';
$permissions[self::PERMISSION_CUSTOMER_CALLBACK] = 'Manage customer callbacks';
break;
case self::MODULE_DOCUMENT:
$permissions[self::PERMISSION_COMMITMENTS_RECEIVABLES_EXPORT] = 'Commitments Receivables export';
$permissions[self::PERMISSION_ARTISJUS_PRODUCT_EXPORT] = 'Artisjus product export';
$permissions[self::PERMISSION_DOCUMENT_EXPORT] = 'Document export';
$permissions[self::PERMISSION_BILLINGO_DOCUMENTS] = 'Billingo documents';
$permissions[self::PERMISSION_POHODA_EXPORT] = 'Pohoda export';
$permissions[self::PERMISSION_SOLD_GOODS_FROM_SK_TO_HU] = 'Sold goods from SK to HU';
$permissions[self::PERMISSION_EXCHANGE_RATES] = 'Exchange rates';
$permissions[self::PERMISSION_PAYMENTS] = 'Payments';
$permissions[self::PERMISSION_DOCUMENT_GROUPS] = 'Document groups';
$permissions[self::PERMISSION_INVOICE_IN_TYPE] = 'In invoices';
$permissions[self::PERMISSION_IN_DOCUMENT_NEXT_IT] = 'In invoices - NEXTIT';
$permissions[self::PERMISSION_CREATE_CREDIT_NOTE] = 'Create credit note';
$permissions[self::PERMISSION_PAYMENT_ADD] = 'Add payment function';
$permissions[self::PERMISSION_FOREIGN_SALES_EXPORT] = 'Foreign sales export';
$permissions[self::PERMISSION_CREDIT_NOTE_CREATE_MOVEMENT] = 'Credit note create movement for RMA';
$permissions[self::PERMISSION_DOCUMENT_MOVEMENT_REMOVE] = 'Document remove stock movement';
$permissions[self::PERMISSION_DOCUMENT_MOVEMENT_ADD] = 'Document add stock movement';
$permissions[self::PERMISSION_UPDATE_LOCKED_INVOICE] = 'Update locked invoice';
break;
case self::MODULE_STOCK_MOVEMENT:
$permissions[self::PERMISSION_IN_PRODUCTION_EXPORT] = 'In prod products export';
$permissions[self::PERMISSION_STOCK_REVIEW] = 'Stock review';
$permissions[self::PERMISSION_STOCK_REVIEW_DELETE] = 'Stock review delete';
$permissions[self::PERMISSION_STOCK_REVIEW_CLOSE] = 'Stock review close';
$permissions[self::PERMISSION_CORRECTIVE_MOVEMENT_CREATE] = 'Corrective movement create';
$permissions[self::PERMISSION_CREATE_DATE_EDIT] = 'Create date edit';
$permissions[self::PERMISSION_STOCK_MOVEMENT_LOGS] = 'Stock movement logs';
$permissions[self::PERMISSION_STOCK_MOVEMENT_LOCK_ALL] = 'Manual lock & unlock';
$permissions[self::PERMISSION_STOCK_MOVEMENT_LOCK_CONFIG_CHANGE] = 'Only lock at Config_change';
$permissions[self::PERMISSION_STOCK_MOVEMENT_SERVICE_CONFIG_CHANGE] = 'Config_change for servicing';
$permissions[self::PERMISSION_STOCK_MOVEMENT_LOCK_IN_BASIC] = 'Only lock at (in)basic';
$permissions[self::PERMISSION_STOCK_MOVEMENT_CHANGE_PRODUCTION_STATUS] = 'Change production status';
$permissions[self::PERMISSION_STOCK_POSITION_LABEL_PRINT] = 'Stock position label print';
$permissions[self::PERMISSION_STOCK_MOVEMENT_ONLY_SCAN_STOCK_ITEMS] = 'Only SCANNING';
$permissions[self::PERMISSION_STOCK_MOVEMENT_IN_UPDATED_ROWS] = 'Updated rows after update in IN';
$permissions[self::PERMISSION_STOCK_MOVEMENT_STOCK_REQUEST_ADMIN] = 'Stock request admin';
$permissions[self::PERMISSION_STOCK_MOVEMENT_CREATE_IN_PRODUCTION_MOVEMENT] = 'Create in production movement';
$permissions[self::PERMISSION_STOCK_MOVEMENT_EXPORT_ALL] = 'Export all and send in email';
$permissions[self::PERMISSION_STOCK_MOVEMENT_EXPORT_SHIPMENT_ITEM] = 'Export shipment items';
$permissions[self::PERMISSION_STOCK_MOVEMENT_CHANGE_CREDIT_NOTE_PRICES] = 'Change credit note prices';
$permissions[self::PERMISSION_STOCK_MOVEMENT_SHIPMENTS] = 'Shipments';
$permissions[self::PERMISSION_STOCK_MOVEMENT_CHANGE_SUBTYPE] = 'Change subtype';
$permissions[self::PERMISSION_STOCK_MOVEMENT_SERVICE_NEUTRAl_SUBTYPE_CHANGE] = 'Service change neutral subtype';
$permissions[self::PERMISSION_EXPORT_SHIPMENTS] = 'Export shipments';
$permissions[self::PERMISSION_STOCK_MOVEMENT_GODMODE_EDIT] = 'GodMode Editor';
$permissions[self::PERMISSION_WANTED_ITEMS_LIST] = 'Wanted items list';
$permissions[self::PERMISSION_WANTED_ITEMS_EDIT_FROM_LIST] = 'Edit wanted items from list';
$permissions[self::PERMISSION_WANTED_ITEM_DELETE] = 'Delete wanted items from list';
break;
case self::MODULE_STOCK_ITEM:
$permissions[self::PERMISSION_GROUP_LABEL_PRINT] = 'Group label print';
$permissions[self::PERMISSION_POSITIONING] = 'Positioning';
$permissions[self::PERMISSION_TEMPORARY_STOCK_POSITIONS] = 'Temporary stock positions';
break;
case self::MODULE_STOCK:
$permissions[self::PERMISSION_STOCK_POSITION] = 'Stock positions';
break;
case self::MODULE_STATISTIC:
$permissions[self::PERMISSION_INCOME_STATISTIC] = 'Income';
$permissions[self::PERMISSION_SALES_MANAGER_STATISTIC] = 'Sales manager';
$permissions[self::PERMISSION_SALES_MANAGER_PARTNER_STATISTIC] = 'Sales manager partner';
$permissions[self::PERMISSION_EXPORT_SALES_MANAGER_STATISTIC] = 'Export sales manager';
$permissions[self::PERMISSION_STOCK_MOVEMENTS_STATISTIC] = 'Stock movements';
$permissions[self::PERMISSION_STOCK_STATUS_STATISTIC] = 'Stock status';
$permissions[self::PERMISSION_COMMITMENTS_RECEIVABLES_STATISTIC] = 'Commitments receivables';
$permissions[self::PERMISSION_DAYS_IN_STOCK_STATISTIC] = 'Days in stock';
$permissions[self::PERMISSION_QUALITY_STATUS_STATISTIC] = 'Quality status';
$permissions[self::PERMISSION_PRODUCTS_STATISTIC] = 'Products';
$permissions[self::PERMISSION_PRODUCT_SALES_STATISTIC] = 'Product sales';
$permissions[self::PERMISSION_SALES_MANAGER_INCOME_TURNOVER] = 'Sales manager income and turnover';
$permissions[self::PERMISSION_CUSTOMERS_STATISTIC] = 'Customers';
$permissions[self::PERMISSION_ONLINE_STOCK_STATISTIC] = 'Online stock';
$permissions[self::PERMISSION_GUESTS_STATISTIC] = 'Guest';
$permissions[self::PERMISSION_OLD_STOCK_ITEM_STATISTIC] = 'Old stock items';
$permissions[self::PERMISSION_STATISTIC_CREDIT_NOTE_VALUES] = 'Credit note values';
$permissions[self::PERMISSION_CLAIM_STATISTIC] = 'Claim';
$permissions[self::PERMISSION_ORDER_STATUS_CHANGELOG_STATISTIC] = 'Order status changelog';
$permissions[self::PERMISSION_ORDER_PRODUCT_CHANGELOG_STATISTIC] = 'Order product changelog';
$permissions[self::PERMISSION_ORDER_ERROR_COMMENT_STATISTIC] = 'Order error comment list';
$permissions[self::PERMISSION_PACKAGES] = 'Packages';
$permissions[self::PERMISSION_STATISTIC_STOCK_POSITION] = 'Stock position';
$permissions[self::PERMISSION_STATISTIC_STOCK_REQUEST_TIMES] = 'Stock request times';
$permissions[self::PERMISSION_RAKTAR_AND_KALODA_STATISTIC] = 'Raktar and Kaloda positioning';
$permissions[self::PERMISSION_MARKETPLACE_LISTINGS] = 'Marketplace listings';
$permissions[self::PERMISSION_PROCESSING_STATISTIC] = 'Processing stats';
$permissions[self::PERMISSION_NOTEBOOK_BATTERY_SKIN_STATISTICS] = 'Notebook battery skin statistics';
break;
case self::MODULE_USER:
$permissions[self::PERMISSION_PERMISSION_LIST] = 'Permission list';
$permissions[self::PERMISSION_PERMISSION_GROUPS] = 'Permission groups';
$permissions[self::PERMISSION_PERMISSION_CHANGELOG] = 'Permission changelog';
$permissions[self::PERMISSION_MEAL_ORDERING] = 'Meal ordering';
$permissions[self::PERMISSION_MEAL_CREDIT_RECHARGE] = 'Meal credit recharge';
$permissions[self::PERMISSION_DELETE_USER_ABSENCE] = 'Delete any user absence';
$permissions[self::PERMISSION_USER_ABSENCE_STATISTICS] = 'User absence statistics';
break;
case self::MODULE_USER_DEPARTMENT:
break;
case self::MODULE_MARKETING_TOOLS:
$permissions[self::PERMISSION_EDITING_PAGES] = 'Editing pages';
$permissions[self::PERMISSION_NAVIGATION] = 'Navigation';
$permissions[self::PERMISSION_SEARCH_ENGINE] = 'Search engine';
$permissions[self::PERMISSION_BANNER] = 'Banner';
$permissions[self::PERMISSION_NANOBAR] = 'Nanobar';
$permissions[self::PERMISSION_PRODUCT_GROUPS] = 'Product groups';
$permissions[self::PERMISSION_PRODUCT_TAGS] = 'Product tags';
$permissions[self::PERMISSION_JOBS] = 'Jobs';
$permissions[self::PERMISSION_REVIEWS] = 'Reviews';
$permissions[self::PERMISSION_SURVEYS] = 'Surveys';
$permissions[self::PERMISSION_COUPONS] = 'Coupons';
$permissions[self::PERMISSION_UNAS_CHATGPT_TRANSLATION] = 'Unas translation';
$permissions[self::PERMISSION_KLAVIYO_CAMPAIGNS] = 'Klaviyo campaigns';
break;
case self::MODULE_OTHER:
$permissions[self::PERMISSION_TRANSLATIONS] = 'Translations';
$permissions[self::PERMISSION_UPLOAD_FILE] = 'Upload file';
$permissions[self::PERMISSION_INTERNAL_NEWS] = 'Internal news';
$permissions[self::PERMISSION_AUTOMATIZATIONS] = 'Automatizations';
$permissions[self::PERMISSION_ERROR_CODES] = 'Aiken error codes';
$permissions[self::PERMISSION_ACCESS_LOG] = 'Access log';
$permissions[self::PERMISSION_SHORTCUT] = 'Manage shortcuts';
$permissions[self::PERMISSION_INTERNAL_JOBS] = 'Internal jobs';
break;
case self::MODULE_CLAIM:
$permissions[self::PERMISSION_CLAIM_CREATE_LABEL] = 'Claim create label';
}
}
return $permissions;
}
/**
* @return array
*/
public static function getBirthdayVisibilityChoices(): array
{
return [
'Show on dashboard, show number of years' => self::BIRTHDAY_VISIBILITY_ALL,
'Show on dashboard, dont show number of years' => self::BIRTHDAY_VISIBILITY_WITHOUT_YEAR,
'Dont show on dashboard' => self::BIRTHDAY_VISIBILITY_HIDDEN,
];
}
/**
* @var string
*
* @Column(name="username", type="string", length=50)
*/
private $username;
/**
* @var string
*
* @Column(name="password", type="string", length=200)
*/
private $password;
/**
* @var string
*
* @Column(name="salt", type="string", length=100)
*/
private $salt;
/**
* @var string
*
* @Column(name="email", type="string", length=255)
*/
private $email;
/**
* @Column(type="text")
*/
private $roles;
/**
* @Column(name="is_active", type="boolean")
*/
private $isActive;
/**
* @var string
*
* @Column(name="first_name", type="string", length=255, nullable=true)
*/
private $firstName;
/**
* @var string
*
* @Column(name="last_name", type="string", length=255, nullable=true)
*/
private $lastName;
/**
* @var string
*
* @Column(name="nick_name", type="string", length=128, nullable=true)
*/
private $nickName;
/**
* @var string
*
* @Column(name="locale", type="string", length=2)
*/
private $locale = 'en';
/**
* @var \DateTime
*
* @Column(name="work_since", type="datetime", nullable=true)
*/
private $workSince;
/**
* @var \DateTime
*
* @Column(name="work_until", type="datetime", nullable=true)
*/
private $workUntil;
/**
* @var \DateTime
*
* @Column(name="birthday", type="datetime", nullable=true)
*/
private $birthday;
/**
* @var integer
*
* @Column(name="allowedDaysOff", type="integer")
*/
private $allowedDaysOff;
/**
* @var string
*
* @Column(name="phone", type="string", length=128, nullable=true)
*/
private $phone;
/**
* @var ArrayCollection
*
* @OneToMany(
* mappedBy="user",
* targetEntity="ShipmentNotificationPreference"
* )
*/
private Collection $shipmentNotificationPreferences;
/**
* @var ArrayCollection
*
* @OrderBy({"sortIndex" = "ASC"})
* @OneToMany(targetEntity="Dashboard", mappedBy="user", cascade={"persist", "remove"})
**/
private $dashboardWidgets;
/**
* @var array
*
* @OneToMany(targetEntity="UserPermission", mappedBy="user", cascade={"persist", "remove"})
**/
private $canView;
/**
* @var ArrayCollection
*
* @OneToMany(targetEntity="StockItem", mappedBy="tester", orphanRemoval=true)
**/
private $testedItems;
/**
* @var ArrayCollection
*
* @ManyToMany(targetEntity="UserDepartment", inversedBy="users")
* @JoinTable(
* name="users_department",
* joinColumns={
* @JoinColumn(name="user_id", referencedColumnName="id")
* },
* inverseJoinColumns={
* @JoinColumn(name="department_id", referencedColumnName="id")
* })
*/
private $departments;
/**
* @Column(name="sales_manager", type="boolean")
*/
private $salesManager = false;
/**
* @Column(name="permissions", type="array", nullable=true)
*/
private $permissions;
/**
* @OneToOne(targetEntity="UserStockPosition", mappedBy="user", cascade={"persist", "remove"})
*/
private $temporaryStockPosition;
/**
* @var int
*
* @Column(name="birthday_visibility", type="integer")
*/
private $birthdayVisibility = self::BIRTHDAY_VISIBILITY_ALL;
/**
* @OneToMany(targetEntity="UserPermissionChangeLog", mappedBy="user", orphanRemoval=true)
* @OrderBy({"created" = "DESC"})
*/
private $permissionChangelog;
/**
* @var ArrayCollection
*
* @ManyToMany(targetEntity="User", inversedBy="subordinates")
* @JoinTable(
* name="users_superior",
* joinColumns={
* @JoinColumn(name="user_id", referencedColumnName="id")
* },
* inverseJoinColumns={
* @JoinColumn(name="superior_id", referencedColumnName="id")
* })
*/
private $superiors;
/**
* @var ArrayCollection
*
* @ManyToMany(targetEntity="User", mappedBy="superiors")
* @OrderBy({"created" = "DESC"})
*/
private $subordinates;
/**
* @var ArrayCollection
*
* @ManyToMany(targetEntity="UserDepartment", mappedBy="teamLeaders")
*/
private $managedDepartments;
/**
* @var string
*
* @Column(name="avatar", type="string", length=96, nullable=true)
*/
private $avatar;
/**
* @var int|null
*
* @Column(name="fingera_id", type="integer", nullable=true)
*/
private ?int $fingeraId;
/**
* @return bool
*/
public function isAdminOrHas(string $access): bool
{
$roles = $this->getRoles();
return in_array('ROLE_ADMIN', $roles) || in_array($access, $roles);
}
/**
* @return bool
*/
public function isAdmin(): bool
{
$roles = $this->getRoles();
return in_array('ROLE_ADMIN', $roles);
}
public function __construct()
{
$this->isActive = true;
$this->salt = md5(uniqid('', true));
$this->testedItems = new ArrayCollection();
$this->superiors = new ArrayCollection();
$this->subordinates = new ArrayCollection();
$this->departments = new ArrayCollection();
$this->managedDepartments = new ArrayCollection();
$this->shipmentNotificationPreferences = new ArrayCollection();
}
public function getUsername()
{
return $this->username;
}
public function setUsername($userName)
{
$this->username = $userName;
}
public function getSalt()
{
return $this->salt;
}
public function setPassword($encodedPassword)
{
return $this->password = $encodedPassword;
}
public function getPassword(): ?string
{
return $this->password;
}
/**
* @return integer
*/
public function getIsActive()
{
return $this->isActive;
}
public function setIsActive($isActive)
{
$this->isActive = $isActive;
}
public function clearRole()
{
$this->roles = '';
}
public function addRole($role)
{
if ($this->roles <> '') {
$this->roles .= '|' . $role;
} else {
$this->roles = $role;
}
}
public function getRoles()
{
return explode('|', $this->roles);
}
public function eraseCredentials()
{
}
/**
* @return mixed
*/
public function getEmail()
{
return $this->email;
}
/**
* @param mixed $email
*/
public function setEmail($email)
{
$this->email = $email;
}
public function getDashboardWidgets()
{
return $this->dashboardWidgets;
}
public function getCanView()
{
return $this->canView;
}
/**
* @return string
*/
public function getFirstName()
{
return $this->firstName;
}
/**
* @param string $firstName
*/
public function setFirstName($firstName)
{
$this->firstName = $firstName;
}
/**
* @return string
*/
public function getLastName()
{
return $this->lastName;
}
/**
* @param string $lastName
*/
public function setLastName($lastName)
{
$this->lastName = $lastName;
}
/**
* @return string
*/
public function getFullName(): string
{
return $this->firstName . ' ' . $this->lastName;
}
/**
* @return string
*/
public function getNickName()
{
return $this->nickName;
}
/**
* @param string $nickName
*/
public function setNickName($nickName)
{
$this->nickName = $nickName;
}
/**
* @return string
*/
public function getLocale()
{
return $this->locale;
}
/**
* @param $locale
*
* @return $this
* @internal param string $lastName
*/
public function setLocale($locale)
{
$this->locale = $locale;
return $this;
}
/**
* @return \DateTime
*/
public function getWorkSince()
{
return $this->workSince;
}
/**
* @param \DateTime $workSince
*/
public function setWorkSince($workSince)
{
$this->workSince = $workSince;
}
/**
* @return \DateTime
*/
public function getWorkUntil()
{
return $this->workUntil;
}
/**
* @param \DateTime $workUntil
*/
public function setWorkUntil($workUntil)
{
$this->workUntil = $workUntil;
}
/**
* @return \DateTime
*/
public function getBirthday()
{
return $this->birthday;
}
/**
* @param \DateTime $birthday
*/
public function setBirthday($birthday)
{
$this->birthday = $birthday;
}
/**
* @return int
*/
public function getAllowedDaysOff()
{
return $this->allowedDaysOff;
}
/**
* @param int $allowedDaysOff
*/
public function setAllowedDaysOff($allowedDaysOff)
{
$this->allowedDaysOff = $allowedDaysOff;
}
/**
* @return ArrayCollection
*/
public function getTestedItems()
{
return $this->testedItems;
}
/**
* @return string
*/
public function getPhone()
{
return $this->phone;
}
/**
* @param string $phone
*/
public function setPhone($phone)
{
$this->phone = $phone;
}
/**
* Get all Departments
*
* @return ArrayCollection
*/
public function getDepartments(): Collection
{
return $this->departments;
}
/**
* @return array
*/
public function getDepartmentIds(): array
{
$ids = [];
foreach ($this->departments as $department) {
$ids[] = $department->getId();
}
return $ids;
}
/**
* Add a Department
*
* @param UserDepartment $department
*/
public function addDepartment(UserDepartment $department): void
{
if (!$this->departments->contains($department)) {
$this->departments->add($department);
}
}
/**
* Remove a Department
*
* @param UserDepartment $department
*/
public function removeDepartment(UserDepartment $department): void
{
if ($this->departments->contains($department)) {
$this->departments->removeElement($department);
}
}
/**
* Clear Departments
*/
public function clearDepartments(): void
{
$this->departments->clear();
}
/**
* @return bool
*/
public function isSalesManager()
{
return $this->salesManager;
}
/**
* @param bool $salesManager
*/
public function setSalesManager($salesManager)
{
$this->salesManager = $salesManager;
}
/**
* @return ArrayCollection
*/
public function getManagedDepartments(): Collection
{
return $this->managedDepartments;
}
/**
* @return array|null
*/
public function getPermissions(): ?array
{
return $this->permissions;
}
/**
* @param array|null $permissions
*/
public function setPermissions(array $permissions = null)
{
$this->permissions = $permissions;
}
/**
* @return array
*/
public function getPermissionsByModule(string $module): ?array
{
$permissions = $this->getPermissions();
return $permissions[$module] ?? [];
}
/**
* @return UserStockPosition|null
*/
public function getTemporaryStockPosition(): ?UserStockPosition
{
return $this->temporaryStockPosition;
}
/**
* @param UserStockPosition|null
*/
public function setTemporaryStockPosition(?UserStockPosition $userStockPosition): void
{
$this->temporaryStockPosition = $userStockPosition;
}
/**
* @return int
*/
public function getBirthdayVisibility()
{
return $this->birthdayVisibility;
}
/**
* @param int $birthdayShow
*/
public function setBirthdayVisibility($birthdayVisibility)
{
$this->birthdayVisibility = $birthdayVisibility;
}
/**
* @return ArrayCollection
*/
public function getPermissionChangelog(): Collection
{
return $this->permissionChangelog;
}
/**
* @return bool
*/
public function isDeveloper(): bool
{
if ($this->departments->count() > 0) {
foreach ($this->departments as $department) {
if ($department->getId() == 4) {
return true;
}
}
}
return false;
}
/**
* @return bool
*/
public function isPreparatory(): bool
{
if ($this->departments->count() > 0) {
foreach ($this->departments as $department) {
if ($department->getId() == 14) {
return true;
}
}
}
return false;
}
/**
* @return bool
*/
public function isTeamLeader(): bool
{
if ($this->departments->count() > 0) {
foreach ($this->departments as $department) {
if ($department->getTeamLeaders()->count() > 0) {
foreach ($department->getTeamLeaders() as $teamLeader) {
if ($teamLeader->getId() == $this->getId()) {
return true;
}
}
}
}
}
return false;
}
/**
* @return bool
*/
public function isFinancial(): bool
{
if ($this->departments->count() > 0) {
foreach ($this->departments as $department) {
if (in_array($department->getId(), [8])) {
return true;
}
}
}
return false;
}
/**
* @return bool
*/
public function isStockManagment(): bool
{
if ($this->departments->count() > 0) {
foreach ($this->departments as $department) {
if ($department->getId() == 22) {
return true;
}
}
}
return false;
}
/**
* @return bool
*/
public function isPackaging(): bool
{
if ($this->departments->count() > 0) {
foreach ($this->departments as $department) {
if ($department->getId() == 30) {
return true;
}
}
}
return false;
}
/**
* @return bool
*/
public function isSales(): bool
{
if ($this->departments->count() > 0) {
foreach ($this->departments as $department) {
if (in_array($department->getId(), [25, 3, 27, 6, 12, 35, 26, 20, 21])) {
return true;
}
}
}
return false;
}
public function isService(): bool
{
if ($this->departments->count() > 0) {
/** @var UserDepartment $department */
foreach ($this->departments as $department) {
if ($department->getId() == UserDepartment::DEPARTMENT_SERVICE_ID) {
return true;
}
}
}
return false;
}
/**
* Get all Superiors
*
* @return ArrayCollection
*/
public function getSuperiors(): Collection
{
return $this->superiors;
}
/**
* Add a Superiror
*
* @param User $superior
*/
public function addSuperior(User $superior): void
{
if (!$this->superiors->contains($superior)) {
$this->superiors->add($superior);
}
}
/**
* Remove a Superior
*
* @param User $superior
*/
public function removeSuperior(User $superior): void
{
if ($this->superiors->contains($superior)) {
$this->superiors->removeElement($superior);
}
}
/**
* Clear Superiors
*/
public function clearSuperiors(): void
{
$this->superiors->clear();
}
/**
* Get all Subordinates
*
* @return ArrayCollection
*/
public function getSubordinates(): Collection
{
return $this->subordinates;
}
/**
* Set Avatar
*
* @param string|null $avatar
*/
public function setAvatar(?string $avatar = null): void
{
$this->avatar = $avatar;
}
/**
* Get Avatar
*
* @return string|null
*/
public function getAvatar(): ?string
{
return $this->avatar;
}
public function getMenuCacheKey(): string
{
return self::MENU_CACHE_KEY_PREFIX . $this->getId();
}
/**
* @return int|null
*/
public function getFingeraId(): int|null
{
return $this->fingeraId;
}
/**
* @param int $fingeraId
*
* @return void
*/
public function setFingeraId(?int $fingeraId): void
{
$this->fingeraId = $fingeraId;
}
/**
* @return Collection<int, ShipmentNotificationPreference>
*/
public function getShipmentNotificationPreferences(): Collection
{
return $this->shipmentNotificationPreferences;
}
}