/** * @param array $Group * * @return Stage */ public function frontendGroup($Group) { $Stage = new Stage('Gruppen'); $tblGroupAll = Group::useService()->getGroupAll(); if ($tblGroupAll) { array_walk($tblGroupAll, function (TblGroup &$tblGroup) { $Content = array($tblGroup->getDescription() ? new Small(new Muted($tblGroup->getDescription())) : false, $tblGroup->getRemark() ? nl2br($tblGroup->getRemark()) : false); $Content = array_filter($Content); $Type = $tblGroup->getIsLocked() ? Panel::PANEL_TYPE_INFO : Panel::PANEL_TYPE_DEFAULT; $Footer = new PullLeft(new Standard('', '/Corporation/Group/Edit', new Edit(), array('Id' => $tblGroup->getId()), 'Daten ändern') . ($tblGroup->getIsLocked() ? '' : new Standard('', '/Corporation/Group/Destroy', new Remove(), array('Id' => $tblGroup->getId()), 'Gruppe löschen'))); $Footer .= new PullRight(new Label(CorporationCompany::useService()->countCompanyAllByGroup($tblGroup) . ' Firmen', Label::LABEL_TYPE_INFO)); $tblGroup = new LayoutColumn(new Panel($tblGroup->getName(), $Content, $Type, new PullClear($Footer)), 4); }); $LayoutRowList = array(); $LayoutRowCount = 0; $LayoutRow = null; /** * @var LayoutColumn $tblGroup */ foreach ($tblGroupAll as $tblGroup) { if ($LayoutRowCount % 3 == 0) { $LayoutRow = new LayoutRow(array()); $LayoutRowList[] = $LayoutRow; } $LayoutRow->addColumn($tblGroup); $LayoutRowCount++; } } else { $LayoutRowList = new LayoutRow(new LayoutColumn(new Warning('Keine Gruppen vorhanden'))); } $Stage->setContent(new Layout(array(new LayoutGroup($LayoutRowList, new Title('Gruppen')), new LayoutGroup(new LayoutRow(new LayoutColumn(Group::useService()->createGroup($this->formGroup()->appendFormButton(new Primary('Hinzufügen'))->setConfirm('Die neue Gruppe wurde noch nicht gespeichert'), $Group))), new Title('Gruppe hinzufügen'))))); return $Stage; }
/** * @return bool|TblCompany */ public function getServiceTblCompany() { if (null === $this->serviceTblCompany) { return false; } else { return Company::useService()->getCompanyById($this->serviceTblCompany); } }
/** * @param int $Id * @param string $Address * @param array $Type * * @return Stage */ public function frontendCreateToCompany($Id, $Address, $Type) { $Stage = new Stage('E-Mail Adresse', 'Hinzufügen'); $Stage->setMessage('Eine E-Mail Adresse zur gewählten Firma hinzufügen'); $tblCompany = Company::useService()->getCompanyById($Id); $Stage->setContent(new Layout(array(new LayoutGroup(array(new LayoutRow(new LayoutColumn(new Panel(new PersonIcon() . ' Firma', $tblCompany->getName(), Panel::PANEL_TYPE_SUCCESS, new Standard('Zurück zur Firma', '/Corporation/Company', new ChevronLeft(), array('Id' => $tblCompany->getId()))))))), new LayoutGroup(array(new LayoutRow(new LayoutColumn(Mail::useService()->createMailToCompany($this->formAddress()->appendFormButton(new Primary('E-Mail Adresse hinzufügen'))->setConfirm('Eventuelle Änderungen wurden noch nicht gespeichert'), $tblCompany, $Address, $Type)))))))); return $Stage; }
/** * @return Form */ private function formSponsorAssociationCompanyCreate() { $PanelSelectCompanyTitle = new PullClear('Förderverein auswählen:' . new PullRight(new Standard('Neue Firma anlegen', '/Corporation/Company', new Building(), array(), '"Förderverein hinzufügen" verlassen'))); $tblCompanyAll = Company::useService()->getCompanyAll(); array_walk($tblCompanyAll, function (TblCompany &$tblCompany) { $tblCompany = new PullClear(new RadioBox('SponsorAssociation', $tblCompany->getName() . ' ' . new Success($tblCompany->getDescription()), $tblCompany->getId())); }); return new Form(new FormGroup(array(new FormRow(array(new FormColumn(array(new Panel($PanelSelectCompanyTitle, $tblCompanyAll, Panel::PANEL_TYPE_INFO, null, 15)), 12)))))); }
public static function registerCluster() { Search::registerApplication(); Company::registerApplication(); Group::registerApplication(); Main::getDisplay()->addClusterNavigation(new Link(new Link\Route(__NAMESPACE__), new Link\Name('Firmen'))); Main::getDispatcher()->registerRoute(Main::getDispatcher()->createRoute(__NAMESPACE__, __CLASS__ . '::frontendDashboard')); $tblGroupAll = Group::useService()->getGroupAll(); if ($tblGroupAll) { /** @var TblGroup $tblGroup */ foreach ((array) $tblGroupAll as $Index => $tblGroup) { $tblGroupAll[$tblGroup->getName()] = new Layout(new LayoutGroup(new LayoutRow(array(new LayoutColumn($tblGroup->getName() . new Muted(new Small('<br/>' . $tblGroup->getDescription())), array(9, 0, 7)), new LayoutColumn(new Muted(new Small(Group::useService()->countCompanyAllByGroup($tblGroup) . ' Mitglieder')), 2, array(LayoutColumn::GRID_OPTION_HIDDEN_SM, LayoutColumn::GRID_OPTION_HIDDEN_XS)), new LayoutColumn(new PullRight(new Standard('', '/Corporation/Search/Group', new \SPHERE\Common\Frontend\Icon\Repository\Group(), array('Id' => $tblGroup->getId()), 'zur Gruppe')), array(3, 0, 3)))))); $tblGroupAll[$Index] = false; } $tblGroupAll = array_filter($tblGroupAll); Main::getDispatcher()->registerWidget('Firmen', new Panel('Firmen in Gruppen', $tblGroupAll), 4, 6); } $tblCompanyAll = Company::useService()->getCompanyAll(); Main::getDispatcher()->registerWidget('Firmen', new Panel('Anzahl an Firmen', 'Insgesamt: ' . count($tblCompanyAll))); }
/** * @param IFormInterface $Form * @param integer $SponsorAssociation * * @return IFormInterface|string */ public function createSponsorAssociation(IFormInterface $Form, $SponsorAssociation) { /** * Skip to Frontend */ if (null === $SponsorAssociation) { $Form->appendGridGroup(new FormGroup(new FormRow(new FormColumn(new Danger('Bitte wählen Sie einen Förderverein aus'))))); return $Form; } $Error = false; if (!$Error) { $tblCompany = Company::useService()->getCompanyById($SponsorAssociation); if ((new Data($this->Binding))->addSponsorAssociation($tblCompany)) { return new Success('Der Förderverein wurde erfolgreich hinzugefügt') . new Redirect('/Setting/Consumer/SponsorAssociation', 1, array('Id' => $tblCompany->getId())); } else { return new Danger('Der Förderverein konnte nicht hinzugefügt werden') . new Redirect('/Setting/Consumer/SponsorAssociation', 10, array('Id' => $tblCompany->getId())); } } return $Form; }
/** * @param IFormInterface $Form * @param TblPerson $tblPerson * @param array $Meta * * @return IFormInterface|Redirect */ public function createMeta(IFormInterface $Form = null, TblPerson $tblPerson, $Meta) { /** * Skip to Frontend */ if (null === $Meta) { return $Form; } $tblProspect = $this->getProspectByPerson($tblPerson); if ($tblProspect) { (new Data($this->Binding))->updateProspectAppointment($tblProspect->getTblProspectAppointment(), $Meta['Appointment']['ReservationDate'], $Meta['Appointment']['InterviewDate'], $Meta['Appointment']['TrialDate']); $OptionA = Company::useService()->getCompanyById($Meta['Reservation']['SchoolOptionA']); $OptionB = Company::useService()->getCompanyById($Meta['Reservation']['SchoolOptionB']); (new Data($this->Binding))->updateProspectReservation($tblProspect->getTblProspectReservation(), $Meta['Reservation']['Year'], $Meta['Reservation']['Division'], $OptionA ? $OptionA : null, $OptionB ? $OptionB : null); (new Data($this->Binding))->updateProspect($tblProspect, $Meta['Remark']); } else { $tblProspectAppointment = (new Data($this->Binding))->createProspectAppointment($Meta['Appointment']['ReservationDate'], $Meta['Appointment']['InterviewDate'], $Meta['Appointment']['TrialDate']); $OptionA = Company::useService()->getCompanyById($Meta['Reservation']['SchoolOptionA']); $OptionB = Company::useService()->getCompanyById($Meta['Reservation']['SchoolOptionB']); $tblProspectReservation = (new Data($this->Binding))->createProspectReservation($Meta['Reservation']['Year'], $Meta['Reservation']['Division'], $OptionA ? $OptionA : null, $OptionB ? $OptionB : null); (new Data($this->Binding))->createProspect($tblPerson, $tblProspectAppointment, $tblProspectReservation, $Meta['Remark']); } return new Success('Die Daten wurde erfolgreich gespeichert') . new Redirect('/People/Person', 3, array('Id' => $tblPerson->getId())); }
/** * @param IFormInterface $Form * @param integer $Responsibility * * @return IFormInterface|string */ public function createResponsibility(IFormInterface $Form, $Responsibility) { /** * Skip to Frontend */ var_dump($Responsibility); if (null === $Responsibility) { return $Form; } if (false === $Responsibility) { $Form->appendGridGroup(new FormGroup(new FormRow(new FormColumn(new Danger('Bitte wählen Sie einen Schulträger aus'))))); return $Form; } $Error = false; if (!$Error) { $tblCompany = Company::useService()->getCompanyById($Responsibility); if ((new Data($this->Binding))->addResponsibility($tblCompany)) { return new Success('Der Schulträger wurde erfolgreich hinzugefügt') . new Redirect('/Setting/Consumer/Responsibility', 1, array('Id' => $tblCompany->getId())); } else { return new Danger('Der Schulträger konnte nicht hinzugefügt werden') . new Redirect('/Setting/Consumer/Responsibility', 10, array('Id' => $tblCompany->getId())); } } return $Form; }
/** * @return bool|TblCompany[] */ public function getCompanyAllHavingNoGroup() { $Exclude = $this->Connection->getEntityManager()->getQueryBuilder()->select('M.serviceTblCompany')->from('\\SPHERE\\Application\\Corporation\\Group\\Service\\Entity\\TblMember', 'M')->distinct()->getQuery()->getResult("COLUMN_HYDRATOR"); $tblCompanyAll = Company::useService()->getCompanyAll(); if ($tblCompanyAll) { /** @noinspection PhpUnusedParameterInspection */ array_walk($tblCompanyAll, function (TblCompany &$tblCompany, $Index, $Exclude) { if (in_array($tblCompany->getId(), $Exclude)) { $tblCompany = false; } }, $Exclude); $EntityList = array_filter($tblCompanyAll); } else { $EntityList = null; } return null === $EntityList ? false : $EntityList; }
/** * @param IFormInterface $Form * @param integer $School * @param array $Type * * @return IFormInterface|string */ public function createSchool(IFormInterface $Form, $Type, $School) { /** * Skip to Frontend */ if (null === $Type) { return $Form; } $Error = false; if (null === $School) { $Form->appendGridGroup(new FormGroup(new FormRow(new FormColumn(new Danger('Bitte wählen Sie eine Schule aus'))))); $Error = true; } if (!$Error) { $tblCompany = Company::useService()->getCompanyById($School); $tblType = (new Data($this->Binding))->getTypeById($Type['Type']); if ((new Data($this->Binding))->addSchool($tblCompany, $tblType)) { return new Success('Die Schule wurde erfolgreich hinzugefügt') . new Redirect('/Setting/Consumer/School', 1, array('Id' => $tblCompany->getId())); } else { return new Danger('Die Schule konnte nicht hinzugefügt werden') . new Redirect('/Setting/Consumer/School', 10, array('Id' => $tblCompany->getId())); } } return $Form; }
/** * @param TblToCompany $tblToCompany * * @return Form */ private function formRelationshipToCompany(TblToCompany $tblToCompany = null) { $PanelSelectCompanyTitle = new PullClear('zu folgender Firma' . new PullRight(new Standard('Neue Firma anlegen', '/Corporation/Company', new Building(), array(), 'Die aktuell gewählte Person verlassen'))); if ($tblToCompany) { $Global = $this->getGlobal(); if (!isset($Global->POST['To'])) { $Global->POST['Type']['Type'] = $tblToCompany->getTblType()->getId(); $Global->POST['Type']['Remark'] = $tblToCompany->getRemark(); $Global->POST['To'] = $tblToCompany->getServiceTblCompany()->getId(); $Global->POST['PanelSearch-' . sha1($PanelSelectCompanyTitle)] = $tblToCompany->getServiceTblCompany()->getName(); $Global->savePost(); } } $tblTypeAll = Relationship::useService()->getTypeAll(); $tblCompanyAll = Company::useService()->getCompanyAll(); array_walk($tblCompanyAll, function (TblCompany &$tblCompany) { $tblCompany = new PullClear(new RadioBox('To', $tblCompany->getName() . ($tblCompany->getDescription() ? ' - ' . $tblCompany->getDescription() : ''), $tblCompany->getId())); }); return new Form(new FormGroup(array(new FormRow(array(new FormColumn(array(new Panel('hat folgende Beziehung', array(new SelectBox('Type[Type]', 'Beziehungstyp', array('{{ Name }} {{ Description }}' => $tblTypeAll), new TileBig()), new TextArea('Type[Remark]', 'Bemerkungen - z.B: Schulleiter / Geschäftsführer / ..', 'Bemerkungen', new Pencil()), new \SPHERE\Common\Frontend\Text\Repository\Danger(new Info() . ' Es dürfen ausschließlich für die Schulverwaltung notwendige Informationen gespeichert werden.')), Panel::PANEL_TYPE_INFO)), 6), new FormColumn(array(new Panel($PanelSelectCompanyTitle, $tblCompanyAll, Panel::PANEL_TYPE_INFO, null, 15)), 6)))))); }
/** * @param IFormInterface $Form * @param TblToCompany $tblToCompany * @param TblPerson $tblPersonFrom * @param int $tblCompanyTo * @param array $Type * * @return IFormInterface|string */ public function updateRelationshipToCompany(IFormInterface $Form, TblToCompany $tblToCompany, TblPerson $tblPersonFrom, $tblCompanyTo, $Type) { /** * Skip to Frontend */ if (null === $Type) { return $Form; } $Error = false; if (empty($tblCompanyTo)) { $Form->appendGridGroup(new FormGroup(new FormRow(new FormColumn(new Danger('Bitte wählen Sie eine Firma'))))); $Error = true; } else { $tblCompanyTo = Company::useService()->getCompanyById($tblCompanyTo); } if (!$Error) { $tblType = $this->getTypeById($Type['Type']); // Remove current (new Data($this->Binding))->removeCompanyRelationshipToPerson($tblToCompany); // Add new if ((new Data($this->Binding))->addCompanyRelationshipToPerson($tblCompanyTo, $tblPersonFrom, $tblType, $Type['Remark'])) { return new Success('Die Beziehung wurde erfolgreich geändert') . new Redirect('/People/Person', 1, array('Id' => $tblToCompany->getServiceTblPerson()->getId())); } else { return new Danger('Die Beziehung konnte nicht geändert werden') . new Redirect('/People/Person', 10, array('Id' => $tblToCompany->getServiceTblPerson()->getId())); } } return $Form; }
/** * @return Form */ private function formSchoolCompanyCreate() { $PanelSelectCompanyTitle = new PullClear('Schule auswählen:' . new PullRight(new Standard('Neue Firma anlegen', '/Corporation/Company', new Building(), array(), '"Schule hinzufügen" verlassen'))); $tblTypeAll = School::useService()->getTypeAll(); $tblCompanyAll = Company::useService()->getCompanyAll(); array_walk($tblCompanyAll, function (TblCompany &$tblCompany) { $tblCompany = new PullClear(new RadioBox('School', $tblCompany->getName() . ' ' . new Success($tblCompany->getDescription()), $tblCompany->getId())); }); return new Form(new FormGroup(array(new FormRow(array(new FormColumn(array(new Panel('Schulgrad', array(new SelectBox('Type[Type]', '', array('{{ Name }} {{ Description }}' => $tblTypeAll), new TileBig())), Panel::PANEL_TYPE_INFO)), 4), new FormColumn(array(new Panel($PanelSelectCompanyTitle, $tblCompanyAll, Panel::PANEL_TYPE_INFO, null, 15)), 8)))))); }
/** * @param bool|false $TabActive * * @param null|int $Id * @param null|array $Company * @param null|array $Meta * * @return Stage */ public function frontendCompany($TabActive = false, $Id = null, $Company = null, $Meta = null) { $Stage = new Stage('Firmen', 'Datenblatt'); if (!$Id) { $BasicTable = Company::useService()->createCompany($this->formCompany()->appendFormButton(new Primary('Grunddaten anlegen'))->setConfirm('Eventuelle Änderungen wurden noch nicht gespeichert'), $Company); $Stage->setContent(new Layout(array(new LayoutGroup(new LayoutRow(new LayoutColumn($BasicTable)), new Title(new Building() . ' Grunddaten', 'der Firma'))))); } else { $tblCompany = Company::useService()->getCompanyById($Id); $Global = $this->getGlobal(); if (!isset($Global->POST['Company'])) { $Global->POST['Company']['Name'] = $tblCompany->getName(); $Global->POST['Company']['Description'] = $tblCompany->getDescription(); $tblGroupAll = Group::useService()->getGroupAllByCompany($tblCompany); if (!empty($tblGroupAll)) { /** @var TblGroup $tblGroup */ foreach ((array) $tblGroupAll as $tblGroup) { $Global->POST['Company']['Group'][$tblGroup->getId()] = $tblGroup->getId(); } } $Global->savePost(); } $BasicTable = Company::useService()->updateCompany($this->formCompany()->appendFormButton(new Primary('Grunddaten speichern'))->setConfirm('Eventuelle Änderungen wurden noch nicht gespeichert'), $tblCompany, $Company); $MetaTabs = Group::useService()->getGroupAllByCompany($tblCompany); // Sort by Name usort($MetaTabs, function (TblGroup $ObjectA, TblGroup $ObjectB) { return strnatcmp($ObjectA->getName(), $ObjectB->getName()); }); // Create Tabs /** @noinspection PhpUnusedParameterInspection */ array_walk($MetaTabs, function (TblGroup &$tblGroup, $Index, TblCompany $tblCompany) { switch (strtoupper($tblGroup->getMetaTable())) { // case 'COMMON': // $tblGroup = new LayoutTab( 'Allgemein', $tblGroup->getMetaTable(), // array( 'tblCompany' => $tblCompany->getId() ) // ); // break; default: $tblGroup = false; } }, $tblCompany); /** @var LayoutTab[] $MetaTabs */ $MetaTabs = array_filter($MetaTabs); // Folded ? if (!empty($MetaTabs)) { if (!$TabActive || $TabActive == '#') { array_unshift($MetaTabs, new LayoutTab(' ' . new ChevronRight() . ' ', '#', array('Id' => $tblCompany->getId()))); $MetaTabs[0]->setActive(); } else { array_unshift($MetaTabs, new LayoutTab(' ' . new ChevronUp() . ' ', '#', array('Id' => $tblCompany->getId()))); } } // switch (strtoupper($TabActive)) { // case 'COMMON': // $MetaTable = Common::useFrontend()->frontendMeta( $tblCompany, $Meta ); // break; // default: // if (!empty( $MetaTabs )) { // $MetaTable = new Well(new Muted('Bitte wählen Sie eine Rubrik')); // } else { // $MetaTable = new Well(new Warning('Keine Informationen verfügbar')); // } // } $Stage->setContent(new Layout(array(new LayoutGroup(new LayoutRow(new LayoutColumn(array(new Panel(new Building() . ' Firma', array($tblCompany->getName(), $tblCompany->getDescription()), Panel::PANEL_TYPE_SUCCESS), $BasicTable))), new Title(new Building() . ' Grunddaten', 'der Firma')), new LayoutGroup(array(new LayoutRow(new LayoutColumn(Address::useFrontend()->frontendLayoutCompany($tblCompany)))), (new Title(new TagList() . ' Adressdaten', 'der Firma'))->addButton(new Standard('Adresse hinzufügen', '/Corporation/Company/Address/Create', new ChevronDown(), array('Id' => $tblCompany->getId())))), new LayoutGroup(array(new LayoutRow(new LayoutColumn(Phone::useFrontend()->frontendLayoutCompany($tblCompany) . Mail::useFrontend()->frontendLayoutCompany($tblCompany)))), (new Title(new TagList() . ' Kontaktdaten', 'der Firma'))->addButton(new Standard('Telefonnummer hinzufügen', '/Corporation/Company/Phone/Create', new ChevronDown(), array('Id' => $tblCompany->getId())))->addButton(new Standard('E-Mail Adresse hinzufügen', '/Corporation/Company/Mail/Create', new ChevronDown(), array('Id' => $tblCompany->getId())))), new LayoutGroup(array(new LayoutRow(new LayoutColumn(array(Relationship::useFrontend()->frontendLayoutCompany($tblCompany))))), new Title(new TagList() . ' Beziehungen', 'zu Personen'))))); } return $Stage; }