'Created Segment', 'message' => 'You have successfully created a new Segment' ]; } /** @var CanCreateSegment */ private $canCreateSegment; /** @var CreatesSegment */ private $createsSegment; /** * CreateSegmentLogic constructor. * @param CanCreateSegment $canCreateSegment * @param CreatesSegment $createsSegment */ public function __construct( CanCreateSegment $canCreateSegment, CreatesSegment $createsSegment ) { $this->canCreateSegment = $canCreateSegment; $this->createsSegment = $createsSegment; } /** * @param Request $request * @return JsonResponse * @throws ErrorException */ public function logic(Request $request) : JsonResponse { try { DB::beginTransaction(); $segment_object = new SegmentObject( $request->input('name') ); $this->canCreateSegment->passes($segment_object); $segment_query = $this->createsSegment->execute($segment_object); DB::commit(); return $this->resourceResponse(new SegmentResource($segment_query)); } catch (\Exception $exception) { throw new ErrorException($exception->getMessage(), $exception->getCode()); } } }