Files
wticreatorstudio/Modules/Shipping/Repositories/CarrierRepository.php
Fritz Ramirez 10d0c477c8 Initial commit
2024-02-12 22:54:20 -05:00

205 lines
6.8 KiB
PHP

<?php
namespace Modules\Shipping\Repositories;
use App\Traits\ImageStore;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\Event;
use Modules\MultiVendor\Events\SellerCarrierCreateEvent;
use Modules\Shipping\Entities\Carrier;
use Modules\Shipping\Entities\SellerWiseCarrierConfig;
class CarrierRepository
{
use ImageStore;
public function all()
{
$seller_id = getParentSellerId();
$a_carriers = Carrier::where('type','Automatic');
$m_carriers = Carrier::where('type','Manual')->where('created_by',$seller_id);
$carriers = $a_carriers->unionAll($m_carriers)->get();
if(!isModuleActive('ShipRocket')){
$carriers = $carriers->filter(function($item) {
if($item->slug != 'Shiprocket'){
return $item->id;
}
});
if($carriers->count() < 1){
Event::dispatch(new SellerCarrierCreateEvent($seller_id));
return $this->all();
}
}
if(sellerWiseShippingConfig(1)['seller_use_shiproket'] == 0 && $seller_id != 1 ){
$carriers = $carriers->filter(function($item) {
if($item->slug != 'Shiprocket'){
return $item->id;
}
});
if($carriers->count() < 1){
Event::dispatch(new SellerCarrierCreateEvent($seller_id));
return $this->all();
}
}
return $carriers;
}
public function getActiveAll()
{
$seller_id = getParentSellerId();
$a_carriers = Carrier::where('type','Automatic')->whereHas('carrierConfig',function ($q) use ($seller_id){
$q->where('seller_id',$seller_id)->where('carrier_status',1);
});
$m_carriers = Carrier::where('type','Manual')->where('created_by',$seller_id);
$carriers = $a_carriers->unionAll($m_carriers)->where('status',1)->get();
if(!isModuleActive('ShipRocket')){
$carriers = $carriers->filter(function($item) {
if($item->slug != 'Shiprocket'){
return $item->id;
}
});
}
if(sellerWiseShippingConfig(1)['seller_use_shiproket'] == 0 && $seller_id != 1 ){
$carriers = $carriers->filter(function($item) {
if($item->slug != 'Shiprocket'){
return $item->id;
}
});
}
return $carriers;
}
public function status(array $data)
{
$carrier = $this->find($data['carrier_id']);
if($data['status'] == 0 && $carrier && $carrier->shippingMethods->count()){
return 'shipping rate exsist';
}else{
if($carrier->slug == 'Shiprocket'){
return SellerWiseCarrierConfig::where('id',$data['id'])->update([
'carrier_status' => $data['status'],
]);
}else{
return Carrier::where('id',$data['id'])->update([
'status' => $data['status'],
]);
}
}
}
public function find($id)
{
return Carrier::findOrfail($id);
}
public function carrier_credentials(array $data)
{
$seller_id = getParentSellerId();
if($data['id'] == 0){
if (!empty($data['logo'])) {
$data = Arr::add($data, 'logo_src', $this->CarrierLogo($data['logo'], 36, 120));
}
SellerWiseCarrierConfig::create([
'carrier_id'=>$data['carrier_id'],
'seller_id'=>$seller_id,
'email'=>$data['email'],
'password'=>$data['password'],
'channel_id'=>$data['channel_id'],
'logo'=>isset($data['logo_src']) ? $data['logo_src'] : null,
]);
}else{
if (!empty($data['logo'])) {
$data = Arr::add($data, 'logo_src', $this->CarrierLogo($data['logo'], 36, 120));
$carrier_config = SellerWiseCarrierConfig::find($data['id']);
$this->deleteImage($carrier_config->logo);
}
SellerWiseCarrierConfig::where('id',$data['id'])->update([
'carrier_id'=>$data['carrier_id'],
'seller_id'=>$seller_id,
'email'=>$data['email'],
'password'=>$data['password'],
'channel_id'=>$data['channel_id'],
'logo'=>isset($data['logo_src']) ? $data['logo_src'] : null,
]);
}
// $carrier = $this->find($data['id']);
// if (!empty($data['logo'])) {
// $data = Arr::add($data, 'logo_src', $this->CarrierLogo($data['logo'], 36, 120));
// $this->deleteImage($carrier->logo);
// }
// if (!empty($data['logo_src'])) {
// $carrier->logo = $data['logo_src'];
// }
// $carrier->save();
// foreach ($data['types'] as $key => $type) {
// $this->overWriteEnvFile($type, $data[$type]);
// }
}
public function overWriteEnvFile($type, $val)
{
$path = base_path('.env');
if (file_exists($path)) {
$val = '"'.trim($val).'"';
if(is_numeric(strpos(file_get_contents($path), $type)) && strpos(file_get_contents($path), $type) >= 0){
file_put_contents($path, str_replace(
$type.'="'.env($type).'"', $type.'='.$val, file_get_contents($path)
));
}
else{
file_put_contents($path, file_get_contents($path)."\r\n".$type.'='.$val);
}
}
}
public function create(array $data)
{
if (!empty($data['logo'])) {
$data = Arr::add($data, 'logo_url', $this->CarrierLogo($data['logo'], 36, 120));
}
$seller_id = getParentSellerId();
return Carrier::create([
'name'=>$data['name'],
'logo'=>isset($data['logo_url'])?$data['logo_url']:null,
'slug'=>$data['name'],
'tracking_url'=>$data['tracking_url'],
'created_by'=>$seller_id,
]);
}
public function update(array $data,$id)
{
$row = $this->find($id);
if (!empty($data['logo'])) {
$data = Arr::add($data, 'logo_url', $this->CarrierLogo($data['logo'], 36, 120));
if($row->logo){
$this->deleteImage($row->logo);
}
}
return Carrier::where('id',$id)->update([
'name'=>$data['name'],
'logo'=>isset($data['logo_url'])?$data['logo_url']:$row->logo,
'slug'=>$data['name'],
'tracking_url'=>$data['tracking_url'],
]);
}
public function delete(array $data)
{
$row = $this->find($data['id']);
if($row->logo){
$this->deleteImage($row->logo);
}
return $row->delete();
}
}