ldc-crm/tests/coverage/app/Models/Customer.php.html
Jérémy Munsch 81aabdab72
Version 3.0.0
This removes api authentification with token in favor of signature method.
Refactorize code and clean up. It add more unit test plus code coverage
in test/converage.

- Added config.api.timestampTimeout
- Added Helper::signRequest This calculates the request signature
- Added more unit tests and extend code coverage.
- Added rate limiter for web routes
- Added RemoveSpaces Sanitizer on api requests
- Added stress test suite
- Changed AuthServiceProvider api-token to api-hmac
- Changed CustomerSeeder to have at least of customer activated (for unit tests)
- Changed used transation for saveing multiple models
- Changed, in ServiceController generateApiToken to generateServicePassword
- Changed, timestamp has to be send in request with a DateTime format, it also has to a UTC  value
- Composer added brianium/paratest
- Composer update
- Fixed case where removing single optin could be the wrong one (not for the good service)
- Fixed customer delete
- Fixed customer would not be resolved by brand.
- Fixed Really check that request is json checking body content, preventing sending malformed requests
- Remove ApiError::needAuth
- Removed api_token
- Removed ApiController::authenticate
- Removed config.api.tokenTimeout
- Removed Header check or usage because of HAProxy doing weird stuff
- Removed lock files from gitignore
- Removed memcached dependency
- Removed unused questions resources api routes
- Removed workspace file

Migrations
- Added unique index on services.bearer_token
- Changed customer_id on customer_answer is nullable
- Changed services.bearer_pwd length to 312 (the size of the token)
- Dropped services.api_token and service.api_token_date
2022-01-06 12:11:05 +01:00

554 lines
172 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Code Coverage for /home/kwaadpepper/projets/crm/app/Models/Customer.php</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="../../_css/bootstrap.min.css" rel="stylesheet" type="text/css">
<link href="../../_css/octicons.css" rel="stylesheet" type="text/css">
<link href="../../_css/style.css" rel="stylesheet" type="text/css">
<link href="../../_css/custom.css" rel="stylesheet" type="text/css">
</head>
<body>
<header>
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="../../index.html">/home/kwaadpepper/projets/crm</a></li>
<li class="breadcrumb-item"><a href="../index.html">app</a></li>
<li class="breadcrumb-item"><a href="index.html">Models</a></li>
<li class="breadcrumb-item active">Customer.php</li>
</ol>
</nav>
</div>
</div>
</div>
</header>
<div class="container-fluid">
<div class="table-responsive">
<table class="table table-bordered">
<thead>
<tr>
<td>&nbsp;</td>
<td colspan="10"><div align="center"><strong>Code Coverage</strong></div></td>
</tr>
<tr>
<td>&nbsp;</td>
<td colspan="3"><div align="center"><strong>Classes and Traits</strong></div></td>
<td colspan="4"><div align="center"><strong>Functions and Methods</strong></div></td>
<td colspan="3"><div align="center"><strong>Lines</strong></div></td>
</tr>
</thead>
<tbody>
<tr>
<td class="danger">Total</td>
<td class="danger big"> <div class="progress">
<div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
<span class="sr-only">0.00% covered (danger)</span>
</div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
<td class="warning big"> <div class="progress">
<div class="progress-bar bg-warning" role="progressbar" aria-valuenow="70.00" aria-valuemin="0" aria-valuemax="100" style="width: 70.00%">
<span class="sr-only">70.00% covered (warning)</span>
</div>
</div>
</td>
<td class="warning small"><div align="right">70.00%</div></td>
<td class="warning small"><div align="right">7&nbsp;/&nbsp;10</div></td>
<td class="warning small"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></td>
<td class="success big"> <div class="progress">
<div class="progress-bar bg-success" role="progressbar" aria-valuenow="93.22" aria-valuemin="0" aria-valuemax="100" style="width: 93.22%">
<span class="sr-only">93.22% covered (success)</span>
</div>
</div>
</td>
<td class="success small"><div align="right">93.22%</div></td>
<td class="success small"><div align="right">55&nbsp;/&nbsp;59</div></td>
</tr>
<tr>
<td class="danger"><abbr title="App\Models\Customer">Customer</abbr></td>
<td class="danger big"> <div class="progress">
<div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
<span class="sr-only">0.00% covered (danger)</span>
</div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
<td class="warning big"> <div class="progress">
<div class="progress-bar bg-warning" role="progressbar" aria-valuenow="70.00" aria-valuemin="0" aria-valuemax="100" style="width: 70.00%">
<span class="sr-only">70.00% covered (warning)</span>
</div>
</div>
</td>
<td class="warning small"><div align="right">70.00%</div></td>
<td class="warning small"><div align="right">7&nbsp;/&nbsp;10</div></td>
<td class="warning small">24.18</td>
<td class="success big"> <div class="progress">
<div class="progress-bar bg-success" role="progressbar" aria-valuenow="93.22" aria-valuemin="0" aria-valuemax="100" style="width: 93.22%">
<span class="sr-only">93.22% covered (success)</span>
</div>
</div>
</td>
<td class="success small"><div align="right">93.22%</div></td>
<td class="success small"><div align="right">55&nbsp;/&nbsp;59</div></td>
</tr>
<tr>
<td class="success" colspan="4">&nbsp;<a href="#35"><abbr title="infos()">infos</abbr></a></td>
<td class="success big"> <div class="progress">
<div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
<span class="sr-only">100.00% covered (success)</span>
</div>
</div>
</td>
<td class="success small"><div align="right">100.00%</div></td>
<td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
<td class="success small">1</td>
<td class="success big"> <div class="progress">
<div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
<span class="sr-only">100.00% covered (success)</span>
</div>
</div>
</td>
<td class="success small"><div align="right">100.00%</div></td>
<td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
</tr>
<tr>
<td class="success" colspan="4">&nbsp;<a href="#45"><abbr title="logins()">logins</abbr></a></td>
<td class="success big"> <div class="progress">
<div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
<span class="sr-only">100.00% covered (success)</span>
</div>
</div>
</td>
<td class="success small"><div align="right">100.00%</div></td>
<td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
<td class="success small">1</td>
<td class="success big"> <div class="progress">
<div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
<span class="sr-only">100.00% covered (success)</span>
</div>
</div>
</td>
<td class="success small"><div align="right">100.00%</div></td>
<td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
</tr>
<tr>
<td class="success" colspan="4">&nbsp;<a href="#55"><abbr title="optInHistory()">optInHistory</abbr></a></td>
<td class="success big"> <div class="progress">
<div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
<span class="sr-only">100.00% covered (success)</span>
</div>
</div>
</td>
<td class="success small"><div align="right">100.00%</div></td>
<td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
<td class="success small">1</td>
<td class="success big"> <div class="progress">
<div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
<span class="sr-only">100.00% covered (success)</span>
</div>
</div>
</td>
<td class="success small"><div align="right">100.00%</div></td>
<td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
</tr>
<tr>
<td class="success" colspan="4">&nbsp;<a href="#65"><abbr title="brands()">brands</abbr></a></td>
<td class="success big"> <div class="progress">
<div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
<span class="sr-only">100.00% covered (success)</span>
</div>
</div>
</td>
<td class="success small"><div align="right">100.00%</div></td>
<td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
<td class="success small">1</td>
<td class="success big"> <div class="progress">
<div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
<span class="sr-only">100.00% covered (success)</span>
</div>
</div>
</td>
<td class="success small"><div align="right">100.00%</div></td>
<td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
</tr>
<tr>
<td class="success" colspan="4">&nbsp;<a href="#75"><abbr title="answers()">answers</abbr></a></td>
<td class="success big"> <div class="progress">
<div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
<span class="sr-only">100.00% covered (success)</span>
</div>
</div>
</td>
<td class="success small"><div align="right">100.00%</div></td>
<td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
<td class="success small">1</td>
<td class="success big"> <div class="progress">
<div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
<span class="sr-only">100.00% covered (success)</span>
</div>
</div>
</td>
<td class="success small"><div align="right">100.00%</div></td>
<td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
</tr>
<tr>
<td class="danger" colspan="4">&nbsp;<a href="#91"><abbr title="info(App\Models\Brand $brand, int $firstOrNewOrFail): ?App\Models\CustomerInfo">info</abbr></a></td>
<td class="danger big"> <div class="progress">
<div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
<span class="sr-only">0.00% covered (danger)</span>
</div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
<td class="danger small">6.01</td>
<td class="success big"> <div class="progress">
<div class="progress-bar bg-success" role="progressbar" aria-valuenow="92.86" aria-valuemin="0" aria-valuemax="100" style="width: 92.86%">
<span class="sr-only">92.86% covered (success)</span>
</div>
</div>
</td>
<td class="success small"><div align="right">92.86%</div></td>
<td class="success small"><div align="right">13&nbsp;/&nbsp;14</div></td>
</tr>
<tr>
<td class="danger" colspan="4">&nbsp;<a href="#124"><abbr title="login(App\Models\Brand $brand, int $firstOrNewOrFail): ?App\Models\CustomerLogin">login</abbr></a></td>
<td class="danger big"> <div class="progress">
<div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
<span class="sr-only">0.00% covered (danger)</span>
</div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
<td class="danger small">6.01</td>
<td class="success big"> <div class="progress">
<div class="progress-bar bg-success" role="progressbar" aria-valuenow="92.86" aria-valuemin="0" aria-valuemax="100" style="width: 92.86%">
<span class="sr-only">92.86% covered (success)</span>
</div>
</div>
</td>
<td class="success small"><div align="right">92.86%</div></td>
<td class="success small"><div align="right">13&nbsp;/&nbsp;14</div></td>
</tr>
<tr>
<td class="danger" colspan="4">&nbsp;<a href="#156"><abbr title="loadBrandData(App\Models\Brand $brand, bool $orFail): self">loadBrandData</abbr></a></td>
<td class="danger big"> <div class="progress">
<div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
<span class="sr-only">0.00% covered (danger)</span>
</div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
<td class="danger small">5.12</td>
<td class="warning big"> <div class="progress">
<div class="progress-bar bg-warning" role="progressbar" aria-valuenow="83.33" aria-valuemin="0" aria-valuemax="100" style="width: 83.33%">
<span class="sr-only">83.33% covered (warning)</span>
</div>
</div>
</td>
<td class="warning small"><div align="right">83.33%</div></td>
<td class="warning small"><div align="right">10&nbsp;/&nbsp;12</div></td>
</tr>
<tr>
<td class="success" colspan="4">&nbsp;<a href="#183"><abbr title="setOptIn(App\Models\Brand $brand, bool $optIn): void">setOptIn</abbr></a></td>
<td class="success big"> <div class="progress">
<div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
<span class="sr-only">100.00% covered (success)</span>
</div>
</div>
</td>
<td class="success small"><div align="right">100.00%</div></td>
<td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
<td class="success small">1</td>
<td class="success big"> <div class="progress">
<div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
<span class="sr-only">100.00% covered (success)</span>
</div>
</div>
</td>
<td class="success small"><div align="right">100.00%</div></td>
<td class="success small"><div align="right">7&nbsp;/&nbsp;7</div></td>
</tr>
<tr>
<td class="success" colspan="4">&nbsp;<a href="#202"><abbr title="getAnswers(App\Models\Service $service): Illuminate\Database\Eloquent\Collection">getAnswers</abbr></a></td>
<td class="success big"> <div class="progress">
<div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
<span class="sr-only">100.00% covered (success)</span>
</div>
</div>
</td>
<td class="success small"><div align="right">100.00%</div></td>
<td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
<td class="success small">1</td>
<td class="success big"> <div class="progress">
<div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
<span class="sr-only">100.00% covered (success)</span>
</div>
</div>
</td>
<td class="success small"><div align="right">100.00%</div></td>
<td class="success small"><div align="right">7&nbsp;/&nbsp;7</div></td>
</tr>
</tbody>
</table>
</div>
<table id="code" class="table table-borderless table-condensed">
<tbody>
<tr class=" d-flex"><td class="col-1 text-right"><a id="1" href="#1">1</a></td><td class="col-11 codeLine"><span class="default">&lt;?php</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="2" href="#2">2</a></td><td class="col-11 codeLine"></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="3" href="#3">3</a></td><td class="col-11 codeLine"><span class="keyword">namespace</span><span class="default">&nbsp;</span><span class="default">App</span><span class="default">\</span><span class="default">Models</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="4" href="#4">4</a></td><td class="col-11 codeLine"></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="5" href="#5">5</a></td><td class="col-11 codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Database</span><span class="default">\</span><span class="default">Eloquent</span><span class="default">\</span><span class="default">Builder</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="6" href="#6">6</a></td><td class="col-11 codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Database</span><span class="default">\</span><span class="default">Eloquent</span><span class="default">\</span><span class="default">Collection</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="7" href="#7">7</a></td><td class="col-11 codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Database</span><span class="default">\</span><span class="default">Eloquent</span><span class="default">\</span><span class="default">Factories</span><span class="default">\</span><span class="default">HasFactory</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="8" href="#8">8</a></td><td class="col-11 codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Database</span><span class="default">\</span><span class="default">Eloquent</span><span class="default">\</span><span class="default">Model</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="9" href="#9">9</a></td><td class="col-11 codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Database</span><span class="default">\</span><span class="default">Eloquent</span><span class="default">\</span><span class="default">ModelNotFoundException</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="10" href="#10">10</a></td><td class="col-11 codeLine"></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="11" href="#11">11</a></td><td class="col-11 codeLine"><span class="keyword">class</span><span class="default">&nbsp;</span><span class="default">Customer</span><span class="default">&nbsp;</span><span class="keyword">extends</span><span class="default">&nbsp;</span><span class="default">Model</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="12" href="#12">12</a></td><td class="col-11 codeLine"><span class="keyword">{</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="13" href="#13">13</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">HasFactory</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="14" href="#14">14</a></td><td class="col-11 codeLine"></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="15" href="#15">15</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">const</span><span class="default">&nbsp;</span><span class="default">FIRST_OR_NULL</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">0</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="16" href="#16">16</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">const</span><span class="default">&nbsp;</span><span class="default">FIRST_OR_NEW</span><span class="default">&nbsp;&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">1</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="17" href="#17">17</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">const</span><span class="default">&nbsp;</span><span class="default">FIRST_OR_FAIL</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">2</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="18" href="#18">18</a></td><td class="col-11 codeLine"></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="19" href="#19">19</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="20" href="#20">20</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;The&nbsp;attributes&nbsp;that&nbsp;are&nbsp;mass&nbsp;assignable.</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="21" href="#21">21</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="22" href="#22">22</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;string[]</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="23" href="#23">23</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="24" href="#24">24</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span class="default">&nbsp;</span><span class="default">$fillable</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="keyword">[</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="25" href="#25">25</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'email'</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="26" href="#26">26</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">]</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="27" href="#27">27</a></td><td class="col-11 codeLine"></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="28" href="#28">28</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;*&nbsp;RELATIONS</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="29" href="#29">29</a></td><td class="col-11 codeLine"></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="30" href="#30">30</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="31" href="#31">31</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;CustomerInfo&nbsp;hasMany&nbsp;relation</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="32" href="#32">32</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="33" href="#33">33</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;\Illuminate\Database\Eloquent\Relations\HasMany</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="34" href="#34">34</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="35" href="#35">35</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">infos</span><span class="keyword">(</span><span class="keyword">)</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="36" href="#36">36</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="13 tests cover line 37" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testCustomerRelations&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerByEmailOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswers&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testCustomerUnAnsweredIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswer&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="37" href="#37">37</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">hasMany</span><span class="keyword">(</span><span class="default">CustomerInfo</span><span class="default">::</span><span class="keyword">class</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="38" href="#38">38</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="39" href="#39">39</a></td><td class="col-11 codeLine"></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="40" href="#40">40</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="41" href="#41">41</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;CustomerLogin&nbsp;hasMany&nbsp;relation</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="42" href="#42">42</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="43" href="#43">43</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;\Illuminate\Database\Eloquent\Relations\HasMany</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="44" href="#44">44</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="45" href="#45">45</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">logins</span><span class="keyword">(</span><span class="keyword">)</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="46" href="#46">46</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="14 tests cover line 47" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV1CustomerTest::testGetCustomerById&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV2CustomerTest::testCustomerActivate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testCustomerRelations&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerByEmailOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswers&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testCustomerUnAnsweredIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswer&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="47" href="#47">47</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">hasMany</span><span class="keyword">(</span><span class="default">CustomerLogin</span><span class="default">::</span><span class="keyword">class</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="48" href="#48">48</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="49" href="#49">49</a></td><td class="col-11 codeLine"></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="50" href="#50">50</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="51" href="#51">51</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;CustomerOptInHistory&nbsp;hasMany&nbsp;relation</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="52" href="#52">52</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="53" href="#53">53</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;\Illuminate\Database\Eloquent\Relations\HasMany</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="54" href="#54">54</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="55" href="#55">55</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">optInHistory</span><span class="keyword">(</span><span class="keyword">)</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="56" href="#56">56</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="3 tests cover line 57" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testCustomerRelations&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="57" href="#57">57</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">hasMany</span><span class="keyword">(</span><span class="default">CustomerOptInHistory</span><span class="default">::</span><span class="keyword">class</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="58" href="#58">58</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="59" href="#59">59</a></td><td class="col-11 codeLine"></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="60" href="#60">60</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="61" href="#61">61</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Customer&nbsp;Brand&nbsp;belongsToMany&nbsp;relation</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="62" href="#62">62</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="63" href="#63">63</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;\Illuminate\Database\Eloquent\Relations\belongsToMany</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="64" href="#64">64</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="65" href="#65">65</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">brands</span><span class="keyword">(</span><span class="keyword">)</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="66" href="#66">66</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="6 tests cover line 67" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV2CustomerTest::testCustomerLoginUsingCustomerfromAnotherBrand&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testCustomerRelations&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerByEmailOk&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="67" href="#67">67</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">belongsToMany</span><span class="keyword">(</span><span class="default">Brand</span><span class="default">::</span><span class="keyword">class</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">CustomerInfo</span><span class="default">::</span><span class="keyword">class</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="68" href="#68">68</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="69" href="#69">69</a></td><td class="col-11 codeLine"></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="70" href="#70">70</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="71" href="#71">71</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Answers&nbsp;belongsToMany&nbsp;relation</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="72" href="#72">72</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="73" href="#73">73</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;\Illuminate\Database\Eloquent\Relations\BelongsToMany</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="74" href="#74">74</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="75" href="#75">75</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">answers</span><span class="keyword">(</span><span class="keyword">)</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="76" href="#76">76</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="1 test covers line 77" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswer&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="77" href="#77">77</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">belongsToMany</span><span class="keyword">(</span><span class="default">Answer</span><span class="default">::</span><span class="keyword">class</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">'customer_answer'</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="78" href="#78">78</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="79" href="#79">79</a></td><td class="col-11 codeLine"></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="80" href="#80">80</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;*&nbsp;METHODS</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="81" href="#81">81</a></td><td class="col-11 codeLine"></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="82" href="#82">82</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="83" href="#83">83</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Get&nbsp;the&nbsp;CustomerInfo&nbsp;from&nbsp;a&nbsp;specific&nbsp;brand</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="84" href="#84">84</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;or&nbsp;create&nbsp;a&nbsp;New&nbsp;one&nbsp;if&nbsp;$firstOrNewOrFail&nbsp;is&nbsp;1</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="85" href="#85">85</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;throw&nbsp;model&nbsp;not&nbsp;found&nbsp;exception&nbsp;if&nbsp;firstOrNewOrFail&nbsp;=&nbsp;2</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="86" href="#86">86</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="87" href="#87">87</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;Brand&nbsp;&nbsp;&nbsp;$brand</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="88" href="#88">88</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;integer&nbsp;$firstOrNewOrFail</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="89" href="#89">89</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;\Illuminate\Database\Eloquent\Builder</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="90" href="#90">90</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="91" href="#91">91</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">info</span><span class="keyword">(</span><span class="default">Brand</span><span class="default">&nbsp;</span><span class="default">$brand</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">int</span><span class="default">&nbsp;</span><span class="default">$firstOrNewOrFail</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">self</span><span class="default">::</span><span class="default">FIRST_OR_NULL</span><span class="keyword">)</span><span class="keyword">:</span><span class="default">&nbsp;</span><span class="keyword">?</span><span class="default">CustomerInfo</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="92" href="#92">92</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="30 tests cover line 93" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV1CustomerTest::testGetCustomerById&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV2CustomerTest::testCustomerActivate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV2CustomerTest::testCustomerLoginUsingCustomerfromAnotherBrand&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ArcadiaTest::testArcadiaSendOrderDefault&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ArcadiaTest::testArcadiaSendOrderGame&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testCustomerRelations&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldWork&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongPassword&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongEmail&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfCustomerNotActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerValidationFailures&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerByEmailOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswers&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswersWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testCustomerUnAnsweredIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testUnAnsweredIndexWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswerWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="93" href="#93">93</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="keyword">isset</span><span class="keyword">(</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">relations</span><span class="keyword">[</span><span class="default">'infos'</span><span class="keyword">]</span><span class="keyword">)</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="94" href="#94">94</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**&nbsp;@var&nbsp;\App\Models\CustomerInfo&nbsp;$info&nbsp;*/</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="6 tests cover line 95" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testCustomerRelations&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerByEmailOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="95" href="#95">95</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">foreach</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">relations</span><span class="keyword">[</span><span class="default">'infos'</span><span class="keyword">]</span><span class="default">&nbsp;</span><span class="keyword">as</span><span class="default">&nbsp;</span><span class="default">$info</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="6 tests cover line 96" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testCustomerRelations&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerByEmailOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="96" href="#96">96</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$info</span><span class="default">-&gt;</span><span class="default">brand_id</span><span class="default">&nbsp;</span><span class="default">===</span><span class="default">&nbsp;</span><span class="default">$brand</span><span class="default">-&gt;</span><span class="default">id</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="6 tests cover line 97" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testCustomerRelations&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerByEmailOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="97" href="#97">97</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$info</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="98" href="#98">98</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="99" href="#99">99</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="100" href="#100">100</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="30 tests cover line 101" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV1CustomerTest::testGetCustomerById&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV2CustomerTest::testCustomerActivate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV2CustomerTest::testCustomerLoginUsingCustomerfromAnotherBrand&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ArcadiaTest::testArcadiaSendOrderDefault&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ArcadiaTest::testArcadiaSendOrderGame&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testCustomerRelations&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldWork&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongPassword&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongEmail&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfCustomerNotActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerValidationFailures&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerByEmailOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswers&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswersWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testCustomerUnAnsweredIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testUnAnsweredIndexWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswerWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="101" href="#101">101</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$query</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">CustomerInfo</span><span class="default">::</span><span class="default">whereHas</span><span class="keyword">(</span><span class="default">'brand'</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">Builder</span><span class="default">&nbsp;</span><span class="default">$query</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">use</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$brand</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="30 tests cover line 102" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV1CustomerTest::testGetCustomerById&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV2CustomerTest::testCustomerActivate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV2CustomerTest::testCustomerLoginUsingCustomerfromAnotherBrand&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ArcadiaTest::testArcadiaSendOrderDefault&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ArcadiaTest::testArcadiaSendOrderGame&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testCustomerRelations&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldWork&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongPassword&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongEmail&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfCustomerNotActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerValidationFailures&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerByEmailOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswers&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswersWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testCustomerUnAnsweredIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testUnAnsweredIndexWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswerWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="102" href="#102">102</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$query</span><span class="default">-&gt;</span><span class="default">where</span><span class="keyword">(</span><span class="default">'id'</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">$brand</span><span class="default">-&gt;</span><span class="default">id</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="30 tests cover line 103" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV1CustomerTest::testGetCustomerById&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV2CustomerTest::testCustomerActivate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV2CustomerTest::testCustomerLoginUsingCustomerfromAnotherBrand&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ArcadiaTest::testArcadiaSendOrderDefault&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ArcadiaTest::testArcadiaSendOrderGame&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testCustomerRelations&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldWork&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongPassword&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongEmail&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfCustomerNotActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerValidationFailures&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerByEmailOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswers&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswersWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testCustomerUnAnsweredIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testUnAnsweredIndexWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswerWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="103" href="#103">103</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span><span class="keyword">)</span><span class="default">-&gt;</span><span class="default">whereHas</span><span class="keyword">(</span><span class="default">'customer'</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">Builder</span><span class="default">&nbsp;</span><span class="default">$query</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="30 tests cover line 104" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV1CustomerTest::testGetCustomerById&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV2CustomerTest::testCustomerActivate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV2CustomerTest::testCustomerLoginUsingCustomerfromAnotherBrand&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ArcadiaTest::testArcadiaSendOrderDefault&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ArcadiaTest::testArcadiaSendOrderGame&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testCustomerRelations&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldWork&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongPassword&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongEmail&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfCustomerNotActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerValidationFailures&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerByEmailOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswers&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswersWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testCustomerUnAnsweredIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testUnAnsweredIndexWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswerWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="104" href="#104">104</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$query</span><span class="default">-&gt;</span><span class="default">where</span><span class="keyword">(</span><span class="default">'id'</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">id</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="30 tests cover line 105" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV1CustomerTest::testGetCustomerById&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV2CustomerTest::testCustomerActivate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV2CustomerTest::testCustomerLoginUsingCustomerfromAnotherBrand&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ArcadiaTest::testArcadiaSendOrderDefault&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ArcadiaTest::testArcadiaSendOrderGame&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testCustomerRelations&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldWork&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongPassword&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongEmail&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfCustomerNotActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerValidationFailures&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerByEmailOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswers&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswersWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testCustomerUnAnsweredIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testUnAnsweredIndexWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswerWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="105" href="#105">105</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="30 tests cover line 106" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV1CustomerTest::testGetCustomerById&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV2CustomerTest::testCustomerActivate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV2CustomerTest::testCustomerLoginUsingCustomerfromAnotherBrand&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ArcadiaTest::testArcadiaSendOrderDefault&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ArcadiaTest::testArcadiaSendOrderGame&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testCustomerRelations&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldWork&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongPassword&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongEmail&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfCustomerNotActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerValidationFailures&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerByEmailOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswers&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswersWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testCustomerUnAnsweredIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testUnAnsweredIndexWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswerWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="106" href="#106">106</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$firstOrNewOrFail</span><span class="default">&nbsp;</span><span class="default">===</span><span class="default">&nbsp;</span><span class="default">self</span><span class="default">::</span><span class="default">FIRST_OR_NEW</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="6 tests cover line 107" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV2CustomerTest::testCustomerLoginUsingCustomerfromAnotherBrand&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="107" href="#107">107</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$query</span><span class="default">-&gt;</span><span class="default">firstOrNew</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="108" href="#108">108</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="29 tests cover line 109" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV1CustomerTest::testGetCustomerById&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV2CustomerTest::testCustomerActivate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ArcadiaTest::testArcadiaSendOrderDefault&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ArcadiaTest::testArcadiaSendOrderGame&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testCustomerRelations&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldWork&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongPassword&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongEmail&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfCustomerNotActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerValidationFailures&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerByEmailOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswers&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswersWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testCustomerUnAnsweredIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testUnAnsweredIndexWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswerWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="109" href="#109">109</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$firstOrNewOrFail</span><span class="default">&nbsp;</span><span class="default">===</span><span class="default">&nbsp;</span><span class="default">self</span><span class="default">::</span><span class="default">FIRST_OR_FAIL</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="29 tests cover line 110" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV1CustomerTest::testGetCustomerById&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV2CustomerTest::testCustomerActivate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ArcadiaTest::testArcadiaSendOrderDefault&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ArcadiaTest::testArcadiaSendOrderGame&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testCustomerRelations&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldWork&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongPassword&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongEmail&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfCustomerNotActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerValidationFailures&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerByEmailOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswers&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswersWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testCustomerUnAnsweredIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testUnAnsweredIndexWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswerWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="110" href="#110">110</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$query</span><span class="default">-&gt;</span><span class="default">firstOrFail</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="111" href="#111">111</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
<tr class="danger d-flex"><td class="col-1 text-right"><a id="112" href="#112">112</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$query</span><span class="default">-&gt;</span><span class="default">first</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="113" href="#113">113</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="114" href="#114">114</a></td><td class="col-11 codeLine"></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="115" href="#115">115</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="116" href="#116">116</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Get&nbsp;the&nbsp;CustomerLogin&nbsp;from&nbsp;a&nbsp;specific&nbsp;brand</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="117" href="#117">117</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;or&nbsp;create&nbsp;a&nbsp;New&nbsp;one&nbsp;if&nbsp;$firstOrNewOrFail&nbsp;is&nbsp;1</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="118" href="#118">118</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;throw&nbsp;model&nbsp;not&nbsp;found&nbsp;exception&nbsp;if&nbsp;firstOrNewOrFail&nbsp;=&nbsp;2</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="119" href="#119">119</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="120" href="#120">120</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;Brand&nbsp;&nbsp;&nbsp;$brand</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="121" href="#121">121</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;integer&nbsp;$firstOrNewOrFail</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="122" href="#122">122</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;\Illuminate\Database\Eloquent\Builder</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="123" href="#123">123</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="124" href="#124">124</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">login</span><span class="keyword">(</span><span class="default">Brand</span><span class="default">&nbsp;</span><span class="default">$brand</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">int</span><span class="default">&nbsp;</span><span class="default">$firstOrNewOrFail</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">self</span><span class="default">::</span><span class="default">FIRST_OR_NULL</span><span class="keyword">)</span><span class="keyword">:</span><span class="default">&nbsp;</span><span class="keyword">?</span><span class="default">CustomerLogin</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="125" href="#125">125</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="19 tests cover line 126" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV2CustomerTest::testCustomerLoginUsingCustomerfromAnotherBrand&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testCustomerRelations&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldWork&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongPassword&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfCustomerNotActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerByEmailOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswers&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testCustomerUnAnsweredIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="126" href="#126">126</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="keyword">isset</span><span class="keyword">(</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">relations</span><span class="keyword">[</span><span class="default">'logins'</span><span class="keyword">]</span><span class="keyword">)</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="127" href="#127">127</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**&nbsp;@var&nbsp;\App\Models\CustomerLogin&nbsp;$login&nbsp;*/</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="11 tests cover line 128" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testCustomerRelations&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerByEmailOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswers&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testCustomerUnAnsweredIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswer&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="128" href="#128">128</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">foreach</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">relations</span><span class="keyword">[</span><span class="default">'logins'</span><span class="keyword">]</span><span class="default">&nbsp;</span><span class="keyword">as</span><span class="default">&nbsp;</span><span class="default">$login</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="11 tests cover line 129" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testCustomerRelations&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerByEmailOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswers&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testCustomerUnAnsweredIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswer&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="129" href="#129">129</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$login</span><span class="default">-&gt;</span><span class="default">brand_id</span><span class="default">&nbsp;</span><span class="default">===</span><span class="default">&nbsp;</span><span class="default">$brand</span><span class="default">-&gt;</span><span class="default">id</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="11 tests cover line 130" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testCustomerRelations&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerByEmailOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswers&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testCustomerUnAnsweredIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswer&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="130" href="#130">130</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$login</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="131" href="#131">131</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="132" href="#132">132</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="133" href="#133">133</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="9 tests cover line 134" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV2CustomerTest::testCustomerLoginUsingCustomerfromAnotherBrand&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldWork&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongPassword&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfCustomerNotActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="134" href="#134">134</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$query</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">CustomerLogin</span><span class="default">::</span><span class="default">whereHas</span><span class="keyword">(</span><span class="default">'brand'</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">Builder</span><span class="default">&nbsp;</span><span class="default">$query</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">use</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$brand</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="9 tests cover line 135" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV2CustomerTest::testCustomerLoginUsingCustomerfromAnotherBrand&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldWork&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongPassword&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfCustomerNotActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="135" href="#135">135</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$query</span><span class="default">-&gt;</span><span class="default">where</span><span class="keyword">(</span><span class="default">'id'</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">$brand</span><span class="default">-&gt;</span><span class="default">id</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="9 tests cover line 136" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV2CustomerTest::testCustomerLoginUsingCustomerfromAnotherBrand&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldWork&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongPassword&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfCustomerNotActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="136" href="#136">136</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span><span class="keyword">)</span><span class="default">-&gt;</span><span class="default">whereHas</span><span class="keyword">(</span><span class="default">'customer'</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">Builder</span><span class="default">&nbsp;</span><span class="default">$query</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">use</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$brand</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="9 tests cover line 137" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV2CustomerTest::testCustomerLoginUsingCustomerfromAnotherBrand&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldWork&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongPassword&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfCustomerNotActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="137" href="#137">137</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$query</span><span class="default">-&gt;</span><span class="default">where</span><span class="keyword">(</span><span class="default">'id'</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">id</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="9 tests cover line 138" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV2CustomerTest::testCustomerLoginUsingCustomerfromAnotherBrand&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldWork&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongPassword&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfCustomerNotActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="138" href="#138">138</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="9 tests cover line 139" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV2CustomerTest::testCustomerLoginUsingCustomerfromAnotherBrand&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldWork&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongPassword&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfCustomerNotActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="139" href="#139">139</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$firstOrNewOrFail</span><span class="default">&nbsp;</span><span class="default">===</span><span class="default">&nbsp;</span><span class="default">self</span><span class="default">::</span><span class="default">FIRST_OR_NEW</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="6 tests cover line 140" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\Client\CrmClientV2CustomerTest::testCustomerLoginUsingCustomerfromAnotherBrand&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="140" href="#140">140</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$query</span><span class="default">-&gt;</span><span class="default">firstOrNew</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="141" href="#141">141</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="5 tests cover line 142" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldWork&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongPassword&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfCustomerNotActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="142" href="#142">142</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$firstOrNewOrFail</span><span class="default">&nbsp;</span><span class="default">===</span><span class="default">&nbsp;</span><span class="default">self</span><span class="default">::</span><span class="default">FIRST_OR_FAIL</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="5 tests cover line 143" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldWork&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongPassword&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfCustomerNotActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="143" href="#143">143</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$query</span><span class="default">-&gt;</span><span class="default">firstOrFail</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="144" href="#144">144</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
<tr class="danger d-flex"><td class="col-1 text-right"><a id="145" href="#145">145</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$query</span><span class="default">-&gt;</span><span class="default">first</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="146" href="#146">146</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="147" href="#147">147</a></td><td class="col-11 codeLine"></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="148" href="#148">148</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="149" href="#149">149</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Load&nbsp;login&nbsp;and&nbsp;info&nbsp;for&nbsp;this&nbsp;customer&nbsp;and&nbsp;this&nbsp;specific&nbsp;brand.</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="150" href="#150">150</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="151" href="#151">151</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;Brand&nbsp;&nbsp;&nbsp;$brand</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="152" href="#152">152</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;boolean&nbsp;$orFail</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="153" href="#153">153</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;self</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="154" href="#154">154</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@throws&nbsp;ModelNotFoundException&nbsp;If&nbsp;no&nbsp;login&nbsp;or&nbsp;info&nbsp;was&nbsp;found&nbsp;for&nbsp;the&nbsp;brand.</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="155" href="#155">155</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="156" href="#156">156</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">loadBrandData</span><span class="keyword">(</span><span class="default">Brand</span><span class="default">&nbsp;</span><span class="default">$brand</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">bool</span><span class="default">&nbsp;</span><span class="default">$orFail</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">false</span><span class="keyword">)</span><span class="keyword">:</span><span class="default">&nbsp;</span><span class="default">self</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="157" href="#157">157</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="11 tests cover line 158" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerByEmailOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswers&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testCustomerUnAnsweredIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswer&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="158" href="#158">158</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">load</span><span class="keyword">(</span><span class="keyword">[</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="11 tests cover line 159" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerByEmailOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswers&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testCustomerUnAnsweredIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswer&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="159" href="#159">159</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'logins'</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$q</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">use</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$brand</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="11 tests cover line 160" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerByEmailOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswers&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testCustomerUnAnsweredIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswer&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="160" href="#160">160</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$q</span><span class="default">-&gt;</span><span class="default">where</span><span class="keyword">(</span><span class="default">'brand_id'</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">$brand</span><span class="default">-&gt;</span><span class="default">id</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="11 tests cover line 161" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerByEmailOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswers&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testCustomerUnAnsweredIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswer&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="161" href="#161">161</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span><span class="keyword">,</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="11 tests cover line 162" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerByEmailOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswers&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testCustomerUnAnsweredIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswer&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="162" href="#162">162</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'infos'</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$q</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">use</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$brand</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="11 tests cover line 163" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerByEmailOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswers&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testCustomerUnAnsweredIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswer&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="163" href="#163">163</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$q</span><span class="default">-&gt;</span><span class="default">where</span><span class="keyword">(</span><span class="default">'brand_id'</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">$brand</span><span class="default">-&gt;</span><span class="default">id</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="11 tests cover line 164" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerByEmailOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswers&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testCustomerUnAnsweredIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswer&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="164" href="#164">164</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="165" href="#165">165</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">]</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="11 tests cover line 166" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerByEmailOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswers&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testCustomerUnAnsweredIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswer&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="166" href="#166">166</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$orFail</span><span class="default">&nbsp;</span><span class="default">and</span><span class="default">&nbsp;</span><span class="keyword">!</span><span class="keyword">isset</span><span class="keyword">(</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">relations</span><span class="keyword">[</span><span class="default">'logins'</span><span class="keyword">]</span><span class="keyword">[</span><span class="default">0</span><span class="keyword">]</span><span class="keyword">)</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class="danger d-flex"><td class="col-1 text-right"><a id="167" href="#167">167</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">throw</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="keyword">new</span><span class="default">&nbsp;</span><span class="default">ModelNotFoundException</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">)</span><span class="default">-&gt;</span><span class="default">setModel</span><span class="keyword">(</span><span class="default">CustomerLogin</span><span class="default">::</span><span class="keyword">class</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="168" href="#168">168</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="11 tests cover line 169" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerByEmailOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswers&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testCustomerUnAnsweredIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswer&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="169" href="#169">169</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$orFail</span><span class="default">&nbsp;</span><span class="default">and</span><span class="default">&nbsp;</span><span class="keyword">!</span><span class="keyword">isset</span><span class="keyword">(</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">relations</span><span class="keyword">[</span><span class="default">'infos'</span><span class="keyword">]</span><span class="keyword">[</span><span class="default">0</span><span class="keyword">]</span><span class="keyword">)</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class="danger d-flex"><td class="col-1 text-right"><a id="170" href="#170">170</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">throw</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="keyword">new</span><span class="default">&nbsp;</span><span class="default">ModelNotFoundException</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">)</span><span class="default">-&gt;</span><span class="default">setModel</span><span class="keyword">(</span><span class="default">CustomerInfo</span><span class="default">::</span><span class="keyword">class</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="171" href="#171">171</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="11 tests cover line 172" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerByEmailOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswers&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testCustomerUnAnsweredIndex&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswer&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="172" href="#172">172</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="173" href="#173">173</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="174" href="#174">174</a></td><td class="col-11 codeLine"></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="175" href="#175">175</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="176" href="#176">176</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Set&nbsp;this&nbsp;customer&nbsp;as&nbsp;optin</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="177" href="#177">177</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="178" href="#178">178</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;Brand&nbsp;&nbsp;&nbsp;$brand</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="179" href="#179">179</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;boolean&nbsp;$optIn</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="180" href="#180">180</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;void</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="181" href="#181">181</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@throws&nbsp;\Throwable&nbsp;If&nbsp;customer&nbsp;history&nbsp;update&nbsp;failed.</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="182" href="#182">182</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="183" href="#183">183</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">setOptIn</span><span class="keyword">(</span><span class="default">Brand</span><span class="default">&nbsp;</span><span class="default">$brand</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">bool</span><span class="default">&nbsp;</span><span class="default">$optIn</span><span class="keyword">)</span><span class="keyword">:</span><span class="default">&nbsp;</span><span class="default">void</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="184" href="#184">184</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="4 tests cover line 185" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="185" href="#185">185</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">opt_in</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">$optIn</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="186" href="#186">186</a></td><td class="col-11 codeLine"></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="187" href="#187">187</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;*&nbsp;Ajout&nbsp;dans&nbsp;la&nbsp;table&nbsp;d'historique&nbsp;des&nbsp;opt-in&nbsp;de&nbsp;la&nbsp;nouvelle&nbsp;valeur.</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="4 tests cover line 188" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="188" href="#188">188</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$optInHistory</span><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="keyword">new</span><span class="default">&nbsp;</span><span class="default">CustomerOptInHistory</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="4 tests cover line 189" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="189" href="#189">189</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$optInHistory</span><span class="default">-&gt;</span><span class="default">new_value</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">$optIn</span><span class="keyword">;</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="4 tests cover line 190" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="190" href="#190">190</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$optInHistory</span><span class="default">-&gt;</span><span class="default">customer</span><span class="keyword">(</span><span class="keyword">)</span><span class="default">-&gt;</span><span class="default">associate</span><span class="keyword">(</span><span class="default">$this</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="4 tests cover line 191" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="191" href="#191">191</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$optInHistory</span><span class="default">-&gt;</span><span class="default">brand</span><span class="keyword">(</span><span class="keyword">)</span><span class="default">-&gt;</span><span class="default">associate</span><span class="keyword">(</span><span class="default">$brand</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="4 tests cover line 192" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="192" href="#192">192</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$optInHistory</span><span class="default">-&gt;</span><span class="default">saveOrFail</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="4 tests cover line 193" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="193" href="#193">193</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="194" href="#194">194</a></td><td class="col-11 codeLine"></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="195" href="#195">195</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="196" href="#196">196</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Get&nbsp;All&nbsp;answers&nbsp;given&nbsp;by&nbsp;this&nbsp;customer</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="197" href="#197">197</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;for&nbsp;a&nbsp;specific&nbsp;service</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="198" href="#198">198</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="199" href="#199">199</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;Service&nbsp;$service</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="200" href="#200">200</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;Collection</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="201" href="#201">201</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="202" href="#202">202</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">getAnswers</span><span class="keyword">(</span><span class="default">Service</span><span class="default">&nbsp;</span><span class="default">$service</span><span class="keyword">)</span><span class="keyword">:</span><span class="default">&nbsp;</span><span class="default">Collection</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="203" href="#203">203</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="2 tests cover line 204" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswers&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswer&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="204" href="#204">204</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">Answer</span><span class="default">::</span><span class="default">whereHas</span><span class="keyword">(</span><span class="default">'customers'</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$q</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="2 tests cover line 205" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswers&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswer&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="205" href="#205">205</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$q</span><span class="default">-&gt;</span><span class="default">whereId</span><span class="keyword">(</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">id</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="2 tests cover line 206" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswers&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswer&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="206" href="#206">206</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span><span class="keyword">)</span><span class="default">-&gt;</span><span class="default">whereHas</span><span class="keyword">(</span><span class="default">'question'</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$q</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">use</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$service</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="2 tests cover line 207" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswers&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswer&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="207" href="#207">207</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$q</span><span class="default">-&gt;</span><span class="default">whereHas</span><span class="keyword">(</span><span class="default">'brand'</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$q</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">use</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$service</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="2 tests cover line 208" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswers&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswer&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="208" href="#208">208</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$q</span><span class="default">-&gt;</span><span class="default">whereId</span><span class="keyword">(</span><span class="default">$service</span><span class="default">-&gt;</span><span class="default">brand</span><span class="default">-&gt;</span><span class="default">id</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="2 tests cover line 209" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswers&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswer&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="209" href="#209">209</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="2 tests cover line 210" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswers&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswer&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="210" href="#210">210</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span><span class="keyword">)</span><span class="default">-&gt;</span><span class="default">get</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="211" href="#211">211</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="212" href="#212">212</a></td><td class="col-11 codeLine"><span class="keyword">}</span></td></tr>
</tbody>
</table>
<footer>
<hr/>
<h4>Legend</h4>
<p><span class="success"><strong>Executed</strong></span><span class="danger"><strong>Not Executed</strong></span><span class="warning"><strong>Dead Code</strong></span></p>
<p>
<small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 9.2.10</a> using <a href="https://secure.php.net/" target="_top">PHP 7.3.33-1+ubuntu18.04.1+deb.sury.org+1</a> and <a href="https://phpunit.de/">PHPUnit 9.5.10</a> at Fri Dec 31 16:45:43 CET 2021.</small>
</p>
<a title="Back to the top" id="toplink" href="#">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
</a>
</footer>
</div>
<script src="../../_js/jquery.min.js" type="text/javascript"></script>
<script src="../../_js/popper.min.js" type="text/javascript"></script>
<script src="../../_js/bootstrap.min.js" type="text/javascript"></script>
<script src="../../_js/file.js" type="text/javascript"></script>
</body>
</html>