/ routes / breadcrumbs.php
breadcrumbs.php
  1  <?php
  2  
  3  use Diglactic\Breadcrumbs\Breadcrumbs;
  4  use Diglactic\Breadcrumbs\Generator as BreadcrumbTrail;
  5  
  6  // Dashboard
  7  Breadcrumbs::for('dashboard', function (BreadcrumbTrail $trail) {
  8      $trail->push('Dashboard', route('dashboard'));
  9  });
 10  
 11  // Dossiers
 12  Breadcrumbs::for('dossiers.dossier.index', function (BreadcrumbTrail $trail) {
 13      $trail->push(__('dossiers.title'), route('dossiers.dossier.index'));
 14  });
 15  
 16  // Dossiers > {Dossier}
 17  Breadcrumbs::for('dossiers.dossier.view', function (BreadcrumbTrail $trail, $entity = null) {
 18      $trail->parent('dossiers.dossier.index', route('dossiers.dossier.index'));
 19      $trail->push('#' . $entity->code . ' ' . $entity?->toe?->name ?? __('toes.no-toe'), route('dossiers.dossier.view', $entity->id));
 20  });
 21  
 22  // Dossiers > Creation
 23  Breadcrumbs::for('dossiers.dossier.creation', function (BreadcrumbTrail $trail) {
 24      $trail->parent('dossiers.dossier.index', route('dossiers.dossier.index'));
 25      $trail->push(__('dossiers.creation.title'), route('dossiers.dossier.create'));
 26  });
 27  
 28  // Inbox Files
 29  Breadcrumbs::for('validations.inbox-files.index', function (BreadcrumbTrail $trail) {
 30      $trail->push(__('inbox-files.title'), route('validations.inbox-files.index'));
 31  });
 32  //Non Conformity
 33  Breadcrumbs::for('non-conformities.index', function (BreadcrumbTrail $trail) {
 34      $trail->push(__('non-conformities.index.title'), route('non-conformities.index'));
 35  });
 36  Breadcrumbs::for('non-conformities.view', function (BreadcrumbTrail $trail, $entity = null) {
 37      if (session()->has('dossier')) {
 38          $trail->parent('dossiers.dossier.view', session()->get('dossier'));
 39      }
 40      $trail->parent('non-conformities.index', route('non-conformities.index'));
 41      $trail->push(($entity->code), route('non-conformities.view', $entity->id));
 42  });
 43  
 44  Breadcrumbs::for('validations.inbox-files.view', function (BreadcrumbTrail $trail, $entity = null) {
 45      if (session()->has('dossier')) {
 46          $trail->parent('dossiers.dossier.view', session()->get('dossier'));
 47      }
 48      $trail->parent('validations.inbox-files.index');
 49      //TODO : Cambiar por un título adecuado
 50      $trail->push(__('inbox-files.table.types.' . $entity->type));
 51  });
 52  
 53  Breadcrumbs::for('validations.inbox-files.validations.index', function (BreadcrumbTrail $trail, $entity = null) {
 54      $trail->parent('validations.inbox-files.index');
 55      //TODO : Cambiar por un título adecuado
 56      $trail->push(__('inbox-files.breadcrumb.numbered_file') . $entity->id);
 57      $trail->push(__('inbox-files.validations.title'), route('validations.inbox-files.validations.index', $entity->id));
 58  });
 59  
 60  //Reviews
 61  Breadcrumbs::for('reviews.files.index', function (BreadcrumbTrail $trail) {
 62      $trail->push(__('reviews.title'), route('reviews.files.index'));
 63  });
 64  
 65  //Templates
 66  Breadcrumbs::for('dossiers.dossier-templates.index', function (BreadcrumbTrail $trail) {
 67      $trail->push(__('dossiers.template.title'), route('dossiers.dossier-templates.index'));
 68  });
 69  
 70  // Documents
 71  Breadcrumbs::for('documents', function (BreadcrumbTrail $trail) {
 72      if (Auth::user()->can('viewAny', \App\Models\Document::class)) {
 73          $trail->push(__('documents.title'), route('documents.index'));
 74      }
 75  });
 76  
 77  Breadcrumbs::for('documents.pending', function (BreadcrumbTrail $trail) {
 78      $trail->push(__('documents.title'), route('documents.pending'));
 79  });
 80  
 81  Breadcrumbs::for('document.folders', function (BreadcrumbTrail $trail) {
 82      $trail->push(__('menu.documents.folders'), route('documents.folders'));
 83  });
 84  
 85  Breadcrumbs::for('document.versions.index', function (BreadcrumbTrail $trail, $entity = null) {
 86      if (session()->has('dossier')) {
 87          $trail->parent('dossiers.dossier.view', session()->get('dossier'));
 88      }
 89      $trail->parent('documents');
 90      $trail->push($entity->name, route('document.versions.index', $entity->id));
 91  });
 92  
 93  Breadcrumbs::for('document.out-puts.index', function (BreadcrumbTrail $trail, $entity = null) {
 94      if (session()->has('dossier')) {
 95          $trail->parent('dossiers.dossier.view', session()->get('dossier'));
 96      }
 97      $trail->parent('documents');
 98      $trail->push($entity->name);
 99      $trail->push(__('out-puts.title'));
100  });
101  
102  
103  Breadcrumbs::for('documents.templates.index', function (BreadcrumbTrail $trail) {
104      $trail->push(__('documents.title'));
105      $trail->push(__('documents.templates.title'), route('documents.templates.index'));
106  });
107  
108  Breadcrumbs::for('documents.templates.tokens.index', function (BreadcrumbTrail $trail) {
109      $trail->parent('documents.templates.index');
110      $trail->push(__('template-docs.tokens.title'), route('documents.templates.tokens.index'));
111  });
112  
113  
114  Breadcrumbs::for('documents.templates.eml.index', function (BreadcrumbTrail $trail) {
115      $trail->push(__('eml.template.cards.index'), route('emls.index'));
116  });
117  
118  // Dossiers > {Dossier} > Meet
119  Breadcrumbs::for('dossiers.dossier.meet.view', function (BreadcrumbTrail $trail, $entity = null) {
120      $trail->parent('dossiers.dossier.index', route('dossiers.dossier.index'));
121      $trail->push('#' . $entity->dossier->code . ' ' . $entity->dossier->toe->name, route('dossiers.dossier.view', $entity->dossier->id));
122      $trail->push($entity->name, route('dossiers.dossier.meet.view', $entity->id));
123  });
124  
125  // Entities
126  Breadcrumbs::for('entities.index', function (BreadcrumbTrail $trail) {
127      $trail->push(__('entities.title'), route('entities.index'));
128  });
129  
130  // Entities > {Entity}
131  Breadcrumbs::for('entities.view', function (BreadcrumbTrail $trail, $entity = null) {
132      $trail->parent('entities.index', route('entities.index'));
133      $trail->push($entity->name, route('entities.view', $entity->id));
134  });
135  
136  // Users
137  Breadcrumbs::for('users.index', function (BreadcrumbTrail $trail) {
138      $trail->push(__('users.title'), route('users.index'));
139  });
140  
141  Breadcrumbs::for('users.view', function (BreadcrumbTrail $trail, $entity = null) {
142      if (session()->has('dossier')) {
143          $trail->parent('dossiers.dossier.view', session()->get('dossier'));
144      }
145      $trail->parent('users.index', route('users.index'));
146      $trail->push($entity->fullname, route('users.view', $entity->id));
147  });
148  
149  // Task
150  Breadcrumbs::for('tasks.index', function (BreadcrumbTrail $trail) {
151      $trail->push(__('tasks.task.title'), route('tasks.task.index'));
152  });
153  
154  Breadcrumbs::for('tasks.view', function (BreadcrumbTrail $trail, $entity = null) {
155      $trail->parent('tasks.index', route('tasks.task.index'));
156      $trail->push($entity->title, route('tasks.task.view', $entity->id));
157  });
158  
159  // Milestone
160  Breadcrumbs::for('milestones.view', function (BreadcrumbTrail $trail, $entity = null) {
161      $trail->parent('dossiers.dossier.view', $entity->stage->dossier);
162      $trail->push($entity->title);
163  });
164  
165  // Groups
166  Breadcrumbs::for('norms.groups.index', function (BreadcrumbTrail $trail) {
167      $trail->push(__('norms.group.title'), route('norms.groups.index'));
168  });
169  
170  // Groups > {Group}
171  Breadcrumbs::for('norms.group.view', function (BreadcrumbTrail $trail, $entity = null) {
172      $trail->parent('norms.groups.index', route('norms.groups.index'));
173      $trail->push($entity->name, route('norms.group.view', $entity->id));
174  });
175  
176  // Groups > {Group} > {Norm}
177  Breadcrumbs::for('norms.norm.view', function (BreadcrumbTrail $trail, $entity = null) {
178      $trail->parent('norms.group.view', $entity->normGroup);
179      $trail->push($entity->name, route('norms.norm.view', ['norm' => $entity->id]));
180  });
181  
182  // TOES
183  Breadcrumbs::for('toes.index', function (BreadcrumbTrail $trail) {
184      $trail->push(__('toes.toe.title'), route('toes.index'));
185  });
186  
187  // TOES > {TOE}
188  Breadcrumbs::for('toes.toe.view', function (BreadcrumbTrail $trail, $entity = null) {
189      $trail->parent('toes.index', route('toes.index'));
190      $trail->push($entity->name, route('toes.toe.view', $entity->id));
191  });
192  
193  //Deprecated
194  // TOES > Categories
195  //Breadcrumbs::for('toes.categories.index', function (BreadcrumbTrail $trail) {
196  //    $trail->parent('toes.index');
197  //    $trail->push(__('toes.category.title'), route('toes.categories.index'));
198  //});
199  
200  
201  // App Settings
202  Breadcrumbs::for('app.settings', function (BreadcrumbTrail $trail) {
203      $trail->push(__('app.settings'), route('app.settings'));
204  });
205  
206  Breadcrumbs::for('app.customization', function (BreadcrumbTrail $trail) {
207      $trail->push(__('app.customization'), route('app.customization'));
208  });
209  
210  Breadcrumbs::for('app.schedule', function (BreadcrumbTrail $trail) {
211      $trail->push(__('app.schedule'), route('app.schedule'));
212  });
213  
214  Breadcrumbs::for('audits.index', function (BreadcrumbTrail $trail) {
215      $trail->push(__('audits.title'), route('audits.index'));
216  });
217  
218  //Notifications
219  Breadcrumbs::for('notifications.index', function (BreadcrumbTrail $trail) {
220      $trail->push(__('notifications.title'), route('notifications.index'));
221  });
222  
223  //Role
224  Breadcrumbs::for('roles.index', function (BreadcrumbTrail $trail) {
225      $trail->push(__('roles.index.breadcrumb'), route('roles.index'));
226  });
227  
228  //Role > {Role}
229  Breadcrumbs::for('role.show', function (BreadcrumbTrail $trail, $entity = null) {
230      $trail->parent('roles.index');
231      $trail->push($entity->name, route('role.show', $entity->id));
232  });
233  
234  //Permission
235  Breadcrumbs::for('permissions.index', function (BreadcrumbTrail $trail) {
236      $trail->push(__('permissions.index.breadcrumb'), route('permissions.index'));
237  });
238  
239  Breadcrumbs::for('evidences.index', function (BreadcrumbTrail $trail) {
240      $trail->push(__('evidences.title'), route('evidences.index'));
241  });
242  
243  // Inbox de vulnerabilidades
244  Breadcrumbs::for('vulnerability-mail.index', function (BreadcrumbTrail $trail) {
245      $trail->push(__('vulnerabilities.index.breadcrumb'), route('vulnerability-mail.index'));
246  });
247  
248  //Jsons
249  Breadcrumbs::for('jsons.index', function (BreadcrumbTrail $trail) {
250      $trail->push(__('jsons.title'), route('jsons.index'));
251  });
252  
253  Breadcrumbs::for('jsons.view', function (BreadcrumbTrail $trail, $entity = null) {
254      $trail->parent('jsons.index');
255      $trail->push($entity->schema_name . " - " . $entity->id, route('jsons.view', $entity->id));
256  });
257  
258  //Resolutions
259  Breadcrumbs::for('resolutions.index', function (BreadcrumbTrail $trail) {
260      $trail->push(__('resolutions.title'), route('resolutions.index'));
261  });
262  
263  //Certified Products
264  Breadcrumbs::for('certified-products.index', function (BreadcrumbTrail $trail) {
265      $trail->push(__('certified-products.title'), route('certified-products.index'));
266  });
267  
268  Breadcrumbs::for('certified-products.view', function (BreadcrumbTrail $trail, $entity = null) {
269      $trail->parent('certified-products.index');
270      $trail->push($entity->cuid, route('certified-products.view', $entity->id));
271  });
272  
273  //Protection Profiles
274  Breadcrumbs::for('protection-profiles.index', function (BreadcrumbTrail $trail) {
275      $trail->push(__('protection-profiles.title'), route('protection-profiles.index'));
276  });