Modify claim warranty api call #171

This commit is contained in:
Kendrick Chan 2019-01-10 02:26:42 +08:00
parent e4cedd9e4d
commit bc9cf2a74f
4 changed files with 62 additions and 7 deletions

View file

@ -63,9 +63,17 @@ class TestCommand extends Command
// warranty find
$api->get('/capi/warranties/' . $serial);
*/
// warranty claim
$api->post('/capi/warranties/' . $serial . '/claim');
$id = 86811;
$serial = 'TEST001';
$params = [
'serial' => $serial,
];
$api->post('/capi/warranties/' . $id . '/claim', $params);
/*
// plate warranty
$api->get('/capi/plates/' . $plate_num . '/warranties');

View file

@ -56,7 +56,7 @@ capi_warranty_register:
# claim warranty
capi_warranty_claim:
path: /capi/warranties/{serial}/claim
path: /capi/warranties/{id}/claim
controller: App\Controller\CAPI\WarrantyController::claim
methods: [POST]

View file

@ -194,23 +194,52 @@ class WarrantyController extends APIController
return new APIResponse(true, 'Warranty registered.', $data);
}
public function claim(Request $req, EntityManagerInterface $em, $serial)
public function claim(Request $req, EntityManagerInterface $em, $id)
{
$clean_serial = $this->cleanSerial($serial);
$warr = $em->getRepository(Warranty::class)->findOneBy(['serial' => $clean_serial]);
// required parameters
$params = [
'serial',
];
$msg = $this->checkRequiredParameters($req, $params);
if ($msg)
return new APIResponse(false, $msg);
// no warranty
$warr = $em->getRepository(Warranty::class)->find($id);
if ($warr == null)
return new APIResponse(false, 'No warranty found with that serial number.', null, 404);
return new APIResponse(false, 'No warranty found with that id.', null, 404);
// warranty is not active
if (!$warr->canClaim())
return new APIResponse(false, 'Warranty is not active.');
// check if new serial has been used
$serial = $req->request->get('serial');
$clean_serial = $this->cleanSerial($serial);
$check_warr = $em->getRepository(Warranty::class)->findOneBy(['serial' => $clean_serial]);
if ($check_warr != null)
return new APIResponse(false, 'Serial for replacement has already been used.');
// set status to claim
$warr->setStatus(WarrantyStatus::CLAIMED)
->setDateClaim(new DateTime());
// make replacement warranty
$new_warr = new Warranty();
$new_warr->setSerial($clean_serial)
->setWarrantyClass($warr->getWarrantyClass())
->setPlateNumber($warr->getPlateNumber())
->setBatteryModel($warr->getBatteryModel())
->setBatterySize($warr->getBatterySize())
->setDatePurchase($warr->getDatePurchase())
->setDateClaim(null)
->setDateExpire($warr->getDateExpire())
->setClaimedFrom($warr);
$em->persist($new_warr);
$em->flush();
// TODO: claim log

View file

@ -89,6 +89,13 @@ class Warranty
*/
protected $date_claim;
// claimed from
/**
* @ORM\OneToOne(targetEntity="Warranty")
* @ORM\JoinColumn(name="claim_id", referencedColumnName="id", nullable=true)
*/
protected $claim_from;
public function __construct()
{
$this->date_create = new DateTime();
@ -250,8 +257,19 @@ class Warranty
return true;
if ($this->status == WarrantyStatus::CLAIMED)
return true;
return false;
return false;
}
public function setClaimedFrom($claim_from)
{
$this->claim_form = $claim_from;
return $this;
}
public function getClaimedFrom()
{
return $this->claim_from;
}
}