first(); $packages = Package::all(); // get trial package data $trialPackage = $packages->filter(function ($value, $key) { return $value->default == 'trial'; })->first(); // get default package data $defaultPackage = $packages->filter(function ($value, $key) { return $value->default == 'yes'; })->first(); // get another package data if trial and default package not found $otherPackage = $packages->filter(function ($value, $key) { return $value->default == 'no'; })->first(); // if trial package is active set package to company if ($packageSetting && !is_null($trialPackage)) { $company->package_id = $trialPackage->id; // set company license expire date $noOfDays = (!is_null($packageSetting->no_of_days) && $packageSetting->no_of_days != 0) ? $packageSetting->no_of_days : 30; $company->licence_expire_on = Carbon::now()->addDays($noOfDays)->format('Y-m-d'); } // if trial package is not active set default package to company elseif (!is_null($defaultPackage)) $company->package_id = $defaultPackage->id; else { $company->package_id = $otherPackage->id; } if ($company->date_picker_format == '') { $company->date_picker_format = 'dd-mm-yyyy'; } if(is_null($company->locale)){ $company->locale = global_settings()->new_company_locale; } switch ($company->date_format) { case 'd-m-Y': $company->moment_format = 'DD-MM-YYYY'; break; case 'm-d-Y': $company->moment_format = 'MM-DD-YYYY'; break; case 'Y-m-d': $company->moment_format = 'YYYY-MM-DD'; break; case 'd.m.Y': $company->moment_format = 'DD.MM.YYYY'; break; case 'm.d.Y': $company->moment_format = 'MM.DD.YYYY'; break; case 'Y.m.d': $company->moment_format = 'YYYY.MM.DD'; break; case 'd/m/Y': $company->moment_format = 'DD/MM/YYYY'; break; case 'Y/m/d': $company->moment_format = 'YYYY/MM/DD'; break; case 'd-M-Y': $company->moment_format = 'DD-MMM-YYYY'; break; case 'd/M/Y': $company->moment_format = 'DD/MMM/YYYY'; break; case 'd.M.Y': $company->moment_format = 'DD.MMM.YYYY'; break; case 'd M Y': $company->moment_format = 'DD MMM YYYY'; break; case 'd F, Y': $company->moment_format = 'DD MMMM, YYYY'; break; case 'D/M/Y': $company->moment_format = 'ddd/MMM/YYYY'; break; case 'D.M.Y': $company->moment_format = 'ddd.MMM.YYYY'; break; case 'D-M-Y': $company->moment_format = 'ddd-MMM-YYYY'; break; case 'D M Y': $company->moment_format = 'ddd MMM YYYY'; break; case 'd D M Y': $company->moment_format = 'DD ddd MMM YYYY'; break; case 'D d M Y': $company->moment_format = 'ddd DD MMMM YYYY'; break; case 'dS M Y': $company->moment_format = 'Do MMM YYYY'; break; default: $company->moment_format = 'DD-MM-YYYY'; break; } $company->save(); $this->addTaskBoard($company); $this->addTicketChannel($company); $this->addTicketType($company); $this->addTicketGroup($company); $this->addLeaveType($company); $this->addEmailNotificationSettings($company); $this->addDefaultCurrencies($company); $this->addDefaultThemeSettings($company); $this->addPaymentGatewaySettings($company); $this->addInvoiceSettings($company); $this->addSlackSettings($company); $this->addProjectSettings($company); $this->addAttendanceSettings($company); $this->addCustomFieldGroup($company); $this->addRoles($company); $this->addMessageSetting($company); $this->addLogTImeForSetting($company); $this->addLeadSourceAndLeadStatus($company); $this->addProjectCategory($company); $this->addDashboardWidget($company); $this->insertGDPR($company); $this->addDefaultTimezone($company); event(new CompanyRegistered($company)); } public function addDefaultTimezone($company){ $globalSetting = GlobalSetting::first(); $company->timezone = $globalSetting->timezone; $company->save(); } public function updated(Company $company) { if ($company->isDirty('package_id')) { ModuleSetting::where('company_id', $company->id)->delete(); ModuleSetting::whereNull('company_id')->delete(); $package = Package::findOrFail($company->package_id); $moduleInPackage = (array) json_decode($package->module_in_package); $clientModules = ['projects', 'tickets', 'invoices', 'estimates', 'events', 'products', 'tasks', 'messages', 'payments', 'contracts', 'notices', 'timelogs']; foreach ($moduleInPackage as $module) { if (in_array($module, $clientModules)) { $moduleSetting = new ModuleSetting(); $moduleSetting->company_id = $company->id; $moduleSetting->module_name = $module; $moduleSetting->status = 'active'; $moduleSetting->type = 'client'; $moduleSetting->save(); } $moduleSetting = new ModuleSetting(); $moduleSetting->company_id = $company->id; $moduleSetting->module_name = $module; $moduleSetting->status = 'active'; $moduleSetting->type = 'employee'; $moduleSetting->save(); $moduleSetting = new ModuleSetting(); $moduleSetting->company_id = $company->id; $moduleSetting->module_name = $module; $moduleSetting->status = 'active'; $moduleSetting->type = 'admin'; $moduleSetting->save(); } } session()->forget('company_setting'); } public function updating(Company $company) { $user = user(); if ($user) { $company->last_updated_by = $user->id; } if ($company->isDirty('date_format')) { switch ($company->date_format) { case 'd-m-Y': $company->date_picker_format = 'dd-mm-yyyy'; break; case 'm-d-Y': $company->date_picker_format = 'mm-dd-yyyy'; break; case 'Y-m-d': $company->date_picker_format = 'yyyy-mm-dd'; break; case 'd.m.Y': $company->date_picker_format = 'dd.mm.yyyy'; break; case 'm.d.Y': $company->date_picker_format = 'mm.dd.yyyy'; break; case 'Y.m.d': $company->date_picker_format = 'yyyy.mm.dd'; break; case 'd/m/Y': $company->date_picker_format = 'dd/mm/yyyy'; break; case 'Y/m/d': $company->date_picker_format = 'yyyy/mm/dd'; break; case 'd-M-Y': $company->date_picker_format = 'dd-M-yyyy'; break; case 'd/M/Y': $company->date_picker_format = 'dd/M/yyyy'; break; case 'd.M.Y': $company->date_picker_format = 'dd.M.yyyy'; break; case 'd M Y': $company->date_picker_format = 'dd M yyyy'; break; case 'd F, Y': $company->date_picker_format = 'dd MM, yyyy'; break; case 'D/M/Y': $company->date_picker_format = 'D/M/yyyy'; break; case 'D.M.Y': $company->date_picker_format = 'D.M.yyyy'; break; case 'D-M-Y': $company->date_picker_format = 'D-M-yyyy'; break; case 'D M Y': $company->date_picker_format = 'D M yyyy'; break; case 'd D M Y': $company->date_picker_format = 'dd D M yyyy'; break; case 'D d M Y': $company->date_picker_format = 'D dd M yyyy'; break; case 'dS M Y': $company->date_picker_format = 'dd M yyyy'; break; default: $company->date_picker_format = 'mm/dd/yyyy'; break; } switch ($company->date_format) { case 'd-m-Y': $company->moment_format = 'DD-MM-YYYY'; break; case 'm-d-Y': $company->moment_format = 'MM-DD-YYYY'; break; case 'Y-m-d': $company->moment_format = 'YYYY-MM-DD'; break; case 'd.m.Y': $company->moment_format = 'DD.MM.YYYY'; break; case 'm.d.Y': $company->moment_format = 'MM.DD.YYYY'; break; case 'Y.m.d': $company->moment_format = 'YYYY.MM.DD'; break; case 'd/m/Y': $company->moment_format = 'DD/MM/YYYY'; break; case 'Y/m/d': $company->moment_format = 'YYYY/MM/DD'; break; case 'd-M-Y': $company->moment_format = 'DD-MMM-YYYY'; break; case 'd/M/Y': $company->moment_format = 'DD/MMM/YYYY'; break; case 'd.M.Y': $company->moment_format = 'DD.MMM.YYYY'; break; case 'd M Y': $company->moment_format = 'DD MMM YYYY'; break; case 'd F, Y': $company->moment_format = 'DD MMMM, YYYY'; break; case 'D/M/Y': $company->moment_format = 'ddd/MMM/YYYY'; break; case 'D.M.Y': $company->moment_format = 'ddd.MMM.YYYY'; break; case 'D-M-Y': $company->moment_format = 'ddd-MMM-YYYY'; break; case 'D M Y': $company->moment_format = 'ddd MMM YYYY'; break; case 'd D M Y': $company->moment_format = 'DD ddd MMM YYYY'; break; case 'D d M Y': $company->moment_format = 'ddd DD MMMM YYYY'; break; case 'dS M Y': $company->moment_format = 'Do MMM YYYY'; break; default: $company->moment_format = 'MM/DD/YYYY'; break; } } } public function deleting(Company $company) { $projects = \App\Project::where('company_id', $company->id)->get(); $otherCompanyClient = ClientDetails::with('user') ->select('client_details.id as clientid','users.id as userid','client_details.company_id as client_company_id', 'client_details.name as clientname') ->withoutGlobalScope(CompanyScope::class)->where('client_details.company_id', '<>',$company->id) ->join('users', 'users.id', 'client_details.user_id') ->where('users.company_id', $company->id) ->get(); foreach($otherCompanyClient as $clientUser){ $userData = User::withoutGlobalScopes(['active', CompanyScope::class])->find($clientUser->userid); $userData->company_id = $clientUser->client_company_id; $userData->name = $clientUser->clientname; $userData->save(); $employeeRole = Role::where('name', 'admin')->first(); RoleUser::where('user_id', $userData->id)->where('role_id', $employeeRole->id)->delete(); } foreach ($projects as $project) { File::deleteDirectory('user-uploads/project-files/' . $project->id); $project->forceDelete(); } $expenses = \App\Expense::where('company_id', $company->id)->get(); foreach ($expenses as $expense) { File::delete('user-uploads/expense-invoice/' . $expense->bill); } $users = \App\User::where('company_id', $company->id)->get(); foreach ($users as $user) { File::delete('user-uploads/avatar/' . $user->image); } File::delete('user-uploads/app-logo/' . $company->logo); } public function addTaskBoard($company) { $uncatColumn = new TaskboardColumn(); $uncatColumn->company_id = $company->id; $uncatColumn->column_name = 'Incomplete'; $uncatColumn->slug = 'incomplete'; $uncatColumn->label_color = '#d21010'; $uncatColumn->label_color = '#d21010'; $uncatColumn->priority = 1; $uncatColumn->save(); $completeColumn = new TaskboardColumn(); $completeColumn->company_id = $company->id; $completeColumn->column_name = 'Completed'; $completeColumn->slug = 'completed'; $completeColumn->label_color = '#679c0d'; $completeColumn->priority = $uncatColumn->priority + 1; $completeColumn->save(); } public function addTicketChannel($company) { $channel = new TicketChannel(); $channel->company_id = $company->id; $channel->channel_name = 'Email'; $channel->save(); $channel = new TicketChannel(); $channel->company_id = $company->id; $channel->channel_name = 'Phone'; $channel->save(); $channel = new TicketChannel(); $channel->company_id = $company->id; $channel->channel_name = 'Twitter'; $channel->save(); $channel = new TicketChannel(); $channel->company_id = $company->id; $channel->channel_name = 'Facebook'; $channel->save(); } public function addTicketType($company) { $type = new TicketType(); $type->company_id = $company->id; $type->type = 'Question'; $type->save(); $type = new TicketType(); $type->company_id = $company->id; $type->type = 'Problem'; $type->save(); $type = new TicketType(); $type->company_id = $company->id; $type->type = 'Incident'; $type->save(); $type = new TicketType(); $type->company_id = $company->id; $type->type = 'Feature Request'; $type->save(); } public function addTicketGroup($company) { $group = new TicketGroup(); $group->company_id = $company->id; $group->group_name = 'Sales'; $group->save(); $group = new TicketGroup(); $group->company_id = $company->id; $group->group_name = 'Code'; $group->save(); $group = new TicketGroup(); $group->company_id = $company->id; $group->group_name = 'Management'; $group->save(); } public function addLeaveType($company) { $category = new LeaveType(); $category->company_id = $company->id; $category->type_name = 'Casual'; $category->color = 'success'; $category->save(); $category = new LeaveType(); $category->company_id = $company->id; $category->type_name = 'Sick'; $category->color = 'danger'; $category->save(); $category = new LeaveType(); $category->company_id = $company->id; $category->type_name = 'Earned'; $category->color = 'info'; $category->save(); $leaveTypes = LeaveType::where('company_id', $company->id)->get(); $employees = EmployeeDetails::where('company_id', $company->id)->get(); foreach ($employees as $key => $employee) { foreach ($leaveTypes as $key => $value) { EmployeeLeaveQuota::create( [ 'company_id' => $company->id, 'user_id' => $employee->user_id, 'leave_type_id' => $value->id, 'no_of_leaves' => $value->no_of_leaves ] ); } } } public function addEmailNotificationSettings($company) { // When new expense added by member \App\EmailNotificationSetting::create([ 'setting_name' => 'New Expense/Added by Admin', 'send_email' => 'yes', 'send_push' => 'yes', 'company_id' => $company->id ]); // When new expense added by member \App\EmailNotificationSetting::create([ 'setting_name' => 'New Expense/Added by Member', 'send_email' => 'yes', 'send_push' => 'yes', 'company_id' => $company->id ]); // When expense status changed \App\EmailNotificationSetting::create([ 'setting_name' => 'Expense Status Changed', 'send_email' => 'yes', 'send_push' => 'yes', 'company_id' => $company->id ]); // New Support Ticket Request \App\EmailNotificationSetting::create([ 'setting_name' => 'New Support Ticket Request', 'send_email' => 'yes', 'send_push' => 'yes', 'company_id' => $company->id ]); // When new user registers or added by admin \App\EmailNotificationSetting::create([ 'setting_name' => 'User Registration/Added by Admin', 'send_email' => 'yes', 'send_push' => 'yes', 'company_id' => $company->id ]); // When employee is added to project \App\EmailNotificationSetting::create([ 'setting_name' => 'Employee Assign to Project', 'send_email' => 'yes', 'send_push' => 'yes', 'company_id' => $company->id ]); // When notice published by admin \App\EmailNotificationSetting::create([ 'setting_name' => 'New Notice Published', 'send_email' => 'yes', 'send_push' => 'yes', 'company_id' => $company->id ]); // When user is assigned to a task \App\EmailNotificationSetting::create([ 'setting_name' => 'User Assign to Task', 'send_email' => 'yes', 'send_push' => 'yes', 'company_id' => $company->id ]); // When new leave application added \App\EmailNotificationSetting::create([ 'setting_name' => 'New Leave Application', 'send_email' => 'yes', 'send_push' => 'yes', 'company_id' => $company->id ]); // When task completed \App\EmailNotificationSetting::create([ 'setting_name' => 'Task Completed', 'send_email' => 'yes', 'send_push' => 'yes', 'company_id' => $company->id ]); // When task completed \App\EmailNotificationSetting::create([ 'setting_name' => 'Invoice Create/Update Notification', 'send_email' => 'yes', 'send_push' => 'yes', 'company_id' => $company->id ]); // When task completed \App\EmailNotificationSetting::create([ 'setting_name' => 'Payment Create/Update Notification', 'send_email' => 'yes', 'send_push' => 'yes', 'company_id' => $company->id ]); // New \App\EmailNotificationSetting::create([ 'setting_name' => 'Discussion Reply', 'send_push' => 'yes', 'send_email' => 'yes', 'company_id' => $company->id ]); } /** * @param $company */ public function addDashboardWidget($company) { // When new widget added \App\DashboardWidget::create([ 'widget_name' => 'total_clients', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-dashboard' ]); \App\DashboardWidget::create([ 'widget_name' => 'total_employees', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-dashboard' ]); \App\DashboardWidget::create([ 'widget_name' => 'total_projects', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-dashboard' ]); \App\DashboardWidget::create([ 'widget_name' => 'total_unpaid_invoices', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-dashboard' ]); \App\DashboardWidget::create([ 'widget_name' => 'total_hours_logged', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-dashboard' ]); \App\DashboardWidget::create([ 'widget_name' => 'total_pending_tasks', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-dashboard' ]); \App\DashboardWidget::create([ 'widget_name' => 'total_today_attendance', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-dashboard' ]); \App\DashboardWidget::create([ 'widget_name' => 'total_unresolved_tickets', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-dashboard' ]); \App\DashboardWidget::create([ 'widget_name' => 'total_resolved_tickets', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-dashboard' ]); \App\DashboardWidget::create([ 'widget_name' => 'recent_earnings', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-dashboard' ]); \App\DashboardWidget::create([ 'widget_name' => 'settings_leaves', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-dashboard' ]); \App\DashboardWidget::create([ 'widget_name' => 'new_tickets', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-dashboard' ]); \App\DashboardWidget::create([ 'widget_name' => 'overdue_tasks', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-dashboard' ]); \App\DashboardWidget::create([ 'widget_name' => 'completed_tasks', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-dashboard' ]); // \App\DashboardWidget::create([ // 'widget_name' => 'client_feedbacks', // 'status' => 1, // 'company_id' => $company->id, // 'dashboard_type' => 'admin-dashboard' // ]); \App\DashboardWidget::create([ 'widget_name' => 'pending_follow_up', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-dashboard' ]); \App\DashboardWidget::create([ 'widget_name' => 'project_activity_timeline', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-dashboard' ]); \App\DashboardWidget::create([ 'widget_name' => 'user_activity_timeline', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-dashboard' ]); $widgets = [ ['widget_name' => 'total_clients', 'status' => 1,'company_id' => $company->id, 'dashboard_type' => 'admin-client-dashboard'], ['widget_name' => 'total_leads', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-client-dashboard'], ['widget_name' => 'total_lead_conversions', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-client-dashboard'], ['widget_name' => 'total_contracts_generated', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-client-dashboard'], ['widget_name' => 'total_contracts_signed', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-client-dashboard'], ['widget_name' => 'client_wise_earnings', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-client-dashboard'], ['widget_name' => 'client_wise_timelogs', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-client-dashboard'], ['widget_name' => 'lead_vs_status', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-client-dashboard'], ['widget_name' => 'lead_vs_source', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-client-dashboard'], ['widget_name' => 'latest_client', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-client-dashboard'], ['widget_name' => 'recent_login_activities', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-client-dashboard'], ['widget_name' => 'total_paid_invoices', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-finance-dashboard'], ['widget_name' => 'total_expenses', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-finance-dashboard'], ['widget_name' => 'total_earnings', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-finance-dashboard'], ['widget_name' => 'total_profit', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-finance-dashboard'], ['widget_name' => 'total_pending_amount', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-finance-dashboard'], ['widget_name' => 'invoice_overview', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-finance-dashboard'], ['widget_name' => 'estimate_overview', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-finance-dashboard'], ['widget_name' => 'proposal_overview', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-finance-dashboard'], ['widget_name' => 'invoice_tab', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-finance-dashboard'], ['widget_name' => 'estimate_tab', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-finance-dashboard'], ['widget_name' => 'expense_tab', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-finance-dashboard'], ['widget_name' => 'payment_tab', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-finance-dashboard'], ['widget_name' => 'due_payments_tab', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-finance-dashboard'], ['widget_name' => 'proposal_tab', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-finance-dashboard'], ['widget_name' => 'earnings_by_client', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-finance-dashboard'], ['widget_name' => 'earnings_by_projects', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-finance-dashboard'], ['widget_name' => 'total_leaves_approved', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-hr-dashboard'], ['widget_name' => 'total_new_employee', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-hr-dashboard'], ['widget_name' => 'total_employee_exits', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-hr-dashboard'], ['widget_name' => 'average_attendance', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-hr-dashboard'], ['widget_name' => 'department_wise_employee', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-hr-dashboard'], ['widget_name' => 'designation_wise_employee', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-hr-dashboard'], ['widget_name' => 'gender_wise_employee', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-hr-dashboard'], ['widget_name' => 'role_wise_employee', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-hr-dashboard'], ['widget_name' => 'leaves_taken', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-hr-dashboard'], ['widget_name' => 'late_attendance_mark', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-hr-dashboard'], ['widget_name' => 'total_project', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-project-dashboard'], ['widget_name' => 'total_hours_logged', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-project-dashboard'], ['widget_name' => 'total_overdue_project', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-project-dashboard'], ['widget_name' => 'status_wise_project', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-project-dashboard'], ['widget_name' => 'pending_milestone', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-project-dashboard'], ['widget_name' => 'total_unresolved_tickets', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-ticket-dashboard'], ['widget_name' => 'total_unassigned_ticket', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-ticket-dashboard'], ['widget_name' => 'type_wise_ticket', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-ticket-dashboard'], ['widget_name' => 'status_wise_ticket', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-ticket-dashboard'], ['widget_name' => 'channel_wise_ticket', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-ticket-dashboard'], ['widget_name' => 'new_tickets', 'status' => 1, 'company_id' => $company->id, 'dashboard_type' => 'admin-ticket-dashboard'], ]; foreach ($widgets as $widget) { DashboardWidget::create($widget); } } public function addDefaultCurrencies($company) { $globalCurrencies = GlobalCurrency::all(); $globalSetting = GlobalSetting::first(); foreach ($globalCurrencies as $globalCurrency) { $currency = new Currency(); $currency->company_id = $company->id; $currency->currency_name = $globalCurrency->currency_name; $currency->currency_symbol = $globalCurrency->currency_symbol; $currency->currency_code = $globalCurrency->currency_code; $currency->currency_position = $globalCurrency->currency_position; $currency->save(); if ($globalSetting->currency_id == $globalCurrency->id) { $company->currency_id = $currency->id; $company->save(); } } } public function addDefaultThemeSettings($company) { $theme = new ThemeSetting(); $theme->company_id = $company->id; $theme->panel = "admin"; $theme->header_color = "#ed4040"; $theme->sidebar_color = "#292929"; $theme->sidebar_text_color = "#cbcbcb"; $theme->save(); // project admin panel $theme = new ThemeSetting(); $theme->company_id = $company->id; $theme->panel = "project_admin"; $theme->header_color = "#5475ed"; $theme->sidebar_color = "#292929"; $theme->sidebar_text_color = "#cbcbcb"; $theme->save(); // employee panel $theme = new ThemeSetting(); $theme->company_id = $company->id; $theme->panel = "employee"; $theme->header_color = "#f7c80c"; $theme->sidebar_color = "#292929"; $theme->sidebar_text_color = "#cbcbcb"; $theme->save(); // client panel $theme = new ThemeSetting(); $theme->company_id = $company->id; $theme->panel = "client"; $theme->header_color = "#00c292"; $theme->sidebar_color = "#292929"; $theme->sidebar_text_color = "#cbcbcb"; $theme->save(); } public function addPaymentGatewaySettings($company) { $credential = new \App\PaymentGatewayCredentials(); $credential->company_id = $company->id; $credential->paypal_client_id = null; $credential->paypal_secret = null; $credential->save(); } public function addInvoiceSettings($company) { $invoice = new \App\InvoiceSetting(); $invoice->company_id = $company->id; $invoice->invoice_prefix = 'INV'; $invoice->template = 'invoice-1'; $invoice->due_after = 15; $invoice->invoice_terms = 'Thank you for your business. Please process this invoice within the due date.'; $invoice->save(); } public function addSlackSettings($company) { $slack = new \App\SlackSetting(); $slack->company_id = $company->id; $slack->slack_webhook = null; $slack->slack_logo = null; $slack->save(); } public function addProjectSettings($company) { $project_setting = new ProjectSetting(); $project_setting->company_id = $company->id; $project_setting->send_reminder = 'no'; $project_setting->remind_time = 5; $project_setting->remind_type = 'days'; $project_setting->save(); } public function addAttendanceSettings($company) { $attendance = new \App\AttendanceSetting(); $attendance->company_id = $company->id; $attendance->office_start_time = '09:00:00'; $attendance->office_end_time = '18:00:00'; $attendance->late_mark_duration = '20'; $attendance->save(); } public function addCustomFieldGroup($company) { \DB::table('custom_field_groups')->insert([ 'name' => 'Client', 'model' => 'App\ClientDetails', 'company_id' => $company->id ]); \DB::table('custom_field_groups')->insert([ 'name' => 'Employee', 'model' => 'App\EmployeeDetails', 'company_id' => $company->id ]); \DB::table('custom_field_groups')->insert([ 'name' => 'Project', 'model' => 'App\Project', 'company_id' => $company->id ]); } public function addRoles($company) { $admin = new Role(); $admin->company_id = $company->id; $admin->name = 'admin'; $admin->display_name = 'App Administrator'; // optional $admin->description = 'Admin is allowed to manage everything of the app.'; // optional $admin->save(); $employee = new Role(); $employee->company_id = $company->id; $employee->name = 'employee'; $employee->display_name = 'Employee'; // optional $employee->description = 'Employee can see tasks and projects assigned to him.'; // optional $employee->save(); $client = new Role(); $client->company_id = $company->id; $client->name = 'client'; $client->display_name = 'Client'; // optional $client->description = 'Client can see own tasks and projects.'; // optional $client->save(); } public function addMessageSetting($company) { $setting = new MessageSetting(); $setting->company_id = $company->id; $setting->allow_client_admin = 'yes'; $setting->allow_client_employee = 'yes'; $setting->save(); } public function addLogTImeForSetting($company) { $storage = new LogTimeFor(); $storage->company_id = $company->id; $storage->log_time_for = 'project'; $storage->save(); } public function addLeadSourceAndLeadStatus($company) { $sources = [ ['type' => 'email', 'company_id' => $company->id], ['type' => 'google', 'company_id' => $company->id], ['type' => 'facebook', 'company_id' => $company->id], ['type' => 'friend', 'company_id' => $company->id], ['type' => 'direct visit', 'company_id' => $company->id], ['type' => 'tv ad', 'company_id' => $company->id] ]; LeadSource::insert($sources); $status = [ ['type' => 'pending', 'company_id' => $company->id, 'default' => 1, 'priority' => 1], ['type' => 'inprocess', 'company_id' => $company->id, 'default' => 0, 'priority' => 2], ['type' => 'converted', 'company_id' => $company->id, 'default' => 0, 'priority' => 3] ]; LeadStatus::insert($status); } public function addProjectCategory($company) { $category = new \App\ProjectCategory(); $category->category_name = 'Laravel'; $category->company_id = $company->id; $category->save(); $category = new \App\ProjectCategory(); $category->category_name = 'Java'; $category->company_id = $company->id; $category->save(); } private function insertGDPR($company) { $gdpr = new GdprSetting(); $gdpr->company_id = $company->id; $gdpr->save(); } }