File: /var/www/html/fieldsblaze-heroku/app/Http/Controllers/TargetController.php
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\User;
use App\Models\Performance;
use App\Models\PerformanceLineItem;
use App\Models\Product;
use App\Library\UserLib;
use Illuminate\Support\Facades\Storage;
use DB;
class TargetController extends Controller
{
protected $userLib;
public function __construct(UserLib $userLib)
{
$this->userLib = $userLib;
}
public function allTargets()
{
if (empty(session('UserId'))) {
return redirect('/admin/logout');
}
$AllPerformance = Performance::select('tbl_performance.*', 'tbl_user.FirstName as FirstName', 'tbl_user.LastName as LastName', 'tbl_sales_territory.Name as TerritoryName', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
->leftJoin('tbl_admin', 'tbl_performance.Updated_by', '=', 'tbl_admin.UserId')
->leftJoin('tbl_user', 'tbl_performance.UserId', '=', 'tbl_user.UserId')
->leftJoin('tbl_sales_territory', 'tbl_performance.TerritoryId', '=', 'tbl_sales_territory.TerritoryId')
->where('tbl_performance.IsDeleted', '0')
->orderBy('tbl_performance.id', 'desc')
->get();
$trashPerformance = Performance::select('tbl_performance.*', 'tbl_user.FirstName as FirstName', 'tbl_user.LastName as LastName', 'tbl_sales_territory.Name as TerritoryName', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
->leftJoin('tbl_admin', 'tbl_performance.Updated_by', '=', 'tbl_admin.UserId')
->leftJoin('tbl_user', 'tbl_performance.UserId', '=', 'tbl_user.UserId')
->leftJoin('tbl_sales_territory', 'tbl_performance.TerritoryId', '=', 'tbl_sales_territory.TerritoryId')
->where('tbl_performance.IsDeleted', '1')
->orderBy('tbl_performance.id', 'desc')
->get();
return view('admin.all-targets', ['AllPerformance' => $AllPerformance, 'TrashPerformance' => $trashPerformance]);
}
public function trashTarget()
{
if (empty(session('UserId'))) {
return redirect('/admin/logout');
}
$AllPerformance = Performance::select('tbl_performance.*', 'tbl_user.FirstName as FirstName', 'tbl_user.LastName as LastName', 'tbl_sales_territory.Name as TerritoryName', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
->leftJoin('tbl_admin', 'tbl_performance.Updated_by', '=', 'tbl_admin.UserId')
->leftJoin('tbl_user', 'tbl_performance.UserId', '=', 'tbl_user.UserId')
->leftJoin('tbl_sales_territory', 'tbl_performance.TerritoryId', '=', 'tbl_sales_territory.TerritoryId')
->where('tbl_performance.IsDeleted', '0')
->orderBy('tbl_performance.id', 'desc')
->get();
$trashPerformance = Performance::select('tbl_performance.*', 'tbl_user.FirstName as FirstName', 'tbl_user.LastName as LastName', 'tbl_sales_territory.Name as TerritoryName', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
->leftJoin('tbl_admin', 'tbl_performance.Updated_by', '=', 'tbl_admin.UserId')
->leftJoin('tbl_user', 'tbl_performance.UserId', '=', 'tbl_user.UserId')
->leftJoin('tbl_sales_territory', 'tbl_performance.TerritoryId', '=', 'tbl_sales_territory.TerritoryId')
->where('tbl_performance.IsDeleted', '1')
->orderBy('tbl_performance.id', 'desc')
->get();
return view('admin.trash-target', ['AllPerformance' => $AllPerformance, 'TrashPerformance' => $trashPerformance]);
}
public function targetLineItems()
{
return view('admin.target-line-items');
}
public function trashItems()
{
return view('admin.trash-target-line-items');
}
public function viewTarget($TargetId)
{
if (empty(session('UserId'))) {
return redirect('/admin/logout');
}
$Performance = Performance::select('tbl_performance.*', 'tbl_user.FirstName as FirstName', 'tbl_user.LastName as LastName', 'tbl_sales_territory.Name as TerritoryName', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
->leftJoin('tbl_admin', 'tbl_performance.Updated_by', '=', 'tbl_admin.UserId')
->leftJoin('tbl_user', 'tbl_performance.UserId', '=', 'tbl_user.UserId')
// ->leftJoin('tbl_user', 'tbl_performance.AssignTo', '=', 'tbl_user.UserId')
->leftJoin('tbl_sales_territory', 'tbl_performance.TerritoryId', '=', 'tbl_sales_territory.TerritoryId')
->where('tbl_performance.TargetId', '=', $TargetId)
->get()
->first();
$GetTargetType = $Performance['TargetType'];
if ($GetTargetType = 'Product') {
$getTargetLineItem = '';
$getTargetLineItem = PerformanceLineItem::select('tbl_performance_line_item.*')
->where('TargetId', '=', $TargetId)
->get()
->first();
}
return view('admin.view-target', compact('Performance', 'getTargetLineItem'));
}
### Store New Target
public function storeTarget(Request $request)
{
if (empty(session('UserId'))) {
return redirect('/admin/logout');
}
$TargetType = $request->input('TargetType');
$data['TargetType'] = $request->input('TargetType');
if ($request->input('addProductQuantity')) {
$data['TargetQuantity'] = $request->input('addProductQuantity');
}
if ($request->input('addTargetRevenue')) {
$data['TotalRevenue'] = $request->input('addTargetRevenue');
}
if ($request->input('addTargetTerritory')) {
$data['NoOfVisits'] = $request->input('addTargetTerritory');
}
$data['TerritoryId'] = $request->input('TerritoryName');
$data['UserId'] = $request->input('UserName');
$SDate = '';
if ($request->input('startDate')) {
$SDate = str_replace('/', '-', $request->input('startDate'));
}
$StartDate = date('d-m-Y', strtotime($SDate));
$EDate = '';
if ($request->input('EndDate')) {
$EDate = str_replace('/', '-', $request->input('EndDate'));
}
$EndDate = date('d-m-Y', strtotime($EDate));
$AssignTo = $request->input('UserName');
$g_TargetId = $this->userLib->useridGenrator();
$data['TargetId'] = $g_TargetId;
$data['StartDate'] = $StartDate;
$data['EndDate'] = $EndDate;
$g_targetNo = "PFC-" . time() . '-' . rand();
$data['TargetNo'] = $g_targetNo;
$data['AssignTo'] = $AssignTo;
$data['IsDeleted'] = 0;
$data['Status'] = 1;
$data['Created_by'] = session('UserId');
$data['Created_at'] = date('Y-m-d H:i:s', time());
$data['CreatedDate'] = date('Y-m-d H:i:s', time());
$data['Updated_by'] = session('UserId');
$data['ModifiedDate'] = date('Y-m-d H:i:s', time());
$data['Updated_at'] = date('Y-m-d H:i:s', time());
$insert_target = Performance::insert($data);
$TargetId = $g_TargetId;
$sale_TargetType = $request->input('TargetType');
$TargetQuantity = '';
if ($request->input('addProductQuantity')) {
$TargetQuantity = $request->input('addProductQuantity');
}
$colValue = "";
$colName = "";
if ($request->input('addTargetRevenue')) {
$TotalRevenue = $request->input('addTargetRevenue');
if($TotalRevenue){
$colName .= ",TotalRevenue__c";
$colValue .= ", '".$TotalRevenue."'";
}
}
$NoOfVisits = "";
if ($request->input('addTargetTerritory')) {
$NoOfVisits = $request->input('addTargetTerritory');
if($NoOfVisits){
$colName .= ",NoOfVisits__c";
$colValue .= ", '".$NoOfVisits."'";
}
}
$TerritoryId = $request->input('TerritoryName');
$UserId = $request->input('UserName');
$sale_StartDate = $StartDate;
$sale_EndDate = $EndDate;
$TargetNo = $g_targetNo;
$IsDeleted = 0;
$Status = 1;
$CreatedDate = date('Y-m-d H:i:s', time());
$CreatedBy = session('UserId');
DB::connection('pgsql')->insert("insert into salesforce.Performance__c (TargetId__c,TargetType__c,TargetQuantity__c,TerritoryId__c,UserId__c,AssignTo__c,StartDate__c,EndDate__c,Target__c,IsDeleted,Status__c,Name,CreatedById__c,CreatedDate__c $colName) values ('$TargetId','$sale_TargetType','$TargetQuantity','$TerritoryId','$UserId','$AssignTo','$sale_StartDate','$sale_EndDate','$TargetNo','$IsDeleted','$Status','$TargetNo','$CreatedBy','$CreatedDate' $colValue)");
if ($insert_target) {
if ($TargetType == 'Product') {
$latestTargetId = Performance::orderBy('Created_at', 'DESC')->first();
$TargetId = $latestTargetId['TargetId'];
$ProductId = $request->input('addTargetProduct');
// Get Product Name
$get_product = Product::select('tbl_products.*')
->where('ProductId', $ProductId)
->get()
->first();
$ProductName = $get_product['ProductName'];
// Insert Line Item
$pi_data['TargetLineItemId'] = $this->userLib->useridGenrator();
$pi_data['TargetId'] = $TargetId;
$pi_data['ProductId'] = $ProductId;
$pi_data['ProductPrice'] = $request->input('addProductPrice');
$pi_data['ProductName'] = $ProductName;
$pi_data['TargetQuantity'] = $request->input('addProductQuantity');
$pi_data['UserId'] = $request->input('UserName');
$pi_data['Created_by'] = session('UserId');
$pi_data['Created_at'] = date('Y-m-d H:i:s', time());
$pi_data['CreatedDate'] = date('Y-m-d H:i:s', time());
$pi_data['Updated_by'] = session('UserId');
$pi_data['ModifiedDate'] = date('Y-m-d H:i:s', time());
$pi_data['Updated_at'] = date('Y-m-d H:i:s', time());
$update_target = PerformanceLineItem::insert($pi_data);
if($update_target){
$ProductPrice = $request->input('addProductPrice');
$TargetQuantity = $request->input('addProductQuantity');
$Status = '1';
$IsDeleted = '0';
$UserId = session('UserId');
$Created_by = $UserId;
$CreatedDate = date('Y-m-d H:i:s', time());
$PerformanceLIQuery = "insert into salesforce.Performance_Line_item__c (Target_Id__c,Product_Id__c,Product_Name__c,Product_Price__c,Target_Quantity__c,User_Id__c,Created_at__c,Status__c,IsDeleted__c,Created_by__c) values ('$TargetId','$ProductId','$ProductName','$ProductPrice','$TargetQuantity','$UserId','$CreatedDate','$Status','$IsDeleted','$Created_by')";
DB::connection('pgsql')->insert($PerformanceLIQuery);
}
}
return response()->json('status_success');
} else {
return response()->json('status_failed');
}
}
#### Update Record
public function updateTarget(Request $request)
{
if (empty(session('UserId'))) {
return redirect('/admin/logout');
}
$target_id = $request->input('TargetId');
$TargetType = $request->input('TargetType');
$data['TargetType'] = $request->input('TargetType');
if ($request->input('editProductQuantity')) {
$data['TargetQuantity'] = $request->input('editProductQuantity');
}
if ($request->input('editTargetRevenue')) {
$data['TotalRevenue'] = $request->input('editTargetRevenue');
}
if ($request->input('editTargetTerritory')) {
$data['NoOfVisits'] = $request->input('editTargetTerritory');
}
$data['TerritoryId'] = $request->input('editTerritoryName');
$data['UserId'] = $request->input('UserName');
$SDate = '';
if ($request->input('startDate')) {
$SDate = str_replace('/', '-', $request->input('startDate'));
}
$StartDate = date('d-m-Y', strtotime($SDate));
$EDate = '';
if ($request->input('EndDate')) {
$EDate = str_replace('/', '-', $request->input('EndDate'));
}
$EndDate = date('d-m-Y', strtotime($EDate));
$data['StartDate'] = $StartDate;
$data['EndDate'] = $EndDate;
$data['Updated_by'] = session('UserId');
$data['Updated_at'] = date('Y-m-d H:i:s', time());
$update_target = Performance::where('TargetId', $target_id)->update($data);
$sale_TargetType = $request->input('TargetType');
$TargetQuantity = '';
if ($request->input('editProductQuantity')) {
$TargetQuantity = $request->input('editProductQuantity');
}
if ($request->input('editTargetRevenue')) {
$TotalRevenue = $request->input('editTargetRevenue');
}
else{
$TotalRevenue = '0';
}
if ($request->input('editTargetTerritory')) {
$NoOfVisits = $request->input('editTargetTerritory');
}
else{
$NoOfVisits = '0';
}
$TerritoryId = $request->input('editTerritoryName');
$UserId = $request->input('UserName');
$AssignTo = $request->input('UserName');
$sale_StartDate = $StartDate;
$sale_EndDate = $EndDate;
$Updated_by = session('UserId');
$UpdatedDate = date('Y-m-d H:i:s', time());
DB::connection('pgsql')->update("update salesforce.Performance__c set TargetType__c='$sale_TargetType',TargetQuantity__c='$TargetQuantity',TotalRevenue__c='$TotalRevenue',NoOfVisits__c='$NoOfVisits',TerritoryId__c='$TerritoryId',UserId__c='$UserId',StartDate__c='$sale_StartDate',EndDate__c='$sale_EndDate',Updated_by__c='$Updated_by',Updated_at__c='$UpdatedDate',AssignTo__c='$AssignTo' where TargetId__c='$target_id'");
if ($update_target) {
if ($TargetType == 'Product') {
$ProductId = $request->input('editTargetProduct');
// Get Product Name
$get_product = Product::select('tbl_products.*')
->where('ProductId', $ProductId)
->get()
->first();
$ProductName = $get_product['ProductName'];
// Update Line Item
$pi_data['ProductId'] = $ProductId;
$pi_data['ProductPrice'] = $request->input('editProductPrice');
$pi_data['ProductName'] = $ProductName;
$pi_data['TargetQuantity'] = $request->input('editProductQuantity');
$pi_data['UserId'] = $request->input('UserName');
$pi_data['Updated_by'] = session('UserId');
$pi_data['Updated_at'] = date('Y-m-d H:i:s', time());
$update_target = PerformanceLineItem::where('TargetId', $target_id)->update($pi_data);
if($update_target){
$ProductPrice = $request->input('editProductPrice');
$TargetQuantity = $request->input('editProductQuantity');
$UserId = session('UserId');
$Updated_by = $UserId;
$CreatedDate = date('Y-m-d H:i:s', time());
$PerformanceLIQuery = "update salesforce.Performance_Line_item__c set Product_Name__c='$ProductName',Product_Price__c='$ProductPrice',Target_Quantity__c='$TargetQuantity',User_Id__c='$UserId',Updated_at__c='$CreatedDate',Updated_by__c='$Updated_by' where Target_Id__c='$target_id' and Product_Id__c='$ProductId'";
DB::connection('pgsql')->update($PerformanceLIQuery);
}
}
return response()->json('status_success');
} else {
return response()->json('status_failed');
}
}
#### Delete Target
public function deleteTarget($TargetId)
{
$CreatedDate = date('Y-m-d H:i:s', time());
$data = array();
$data['Updated_at'] = $CreatedDate;
$data['Updated_by'] = session('UserId');
$data['IsDeleted'] = '1';
$target_delete = Performance::where('TargetId', $TargetId)->update($data);
DB::connection('pgsql')->update("update salesforce.Performance__c set IsDeleted='1',Status__c='0' where TargetId__c='$TargetId'");
if ($target_delete) {
echo '1';
} else {
echo '0';
}
}
#### Delete Permanent
public function destroyTarget($TargetId)
{
$destroyData = Performance::where('TargetId', $TargetId);
$destroyData->delete();
}
#### Restore Performance
public function restoreTarget($TargetId)
{
$CreatedDate = date('Y-m-d H:i:s', time());
$data = array();
$data['Updated_at'] = $CreatedDate;
$data['Updated_by'] = session('UserId');
$data['IsDeleted'] = '0';
$target_restore = Performance::where('TargetId', $TargetId)->update($data);
DB::connection('pgsql')->update("update salesforce.Performance__c set IsDeleted='0',Status__c='1' where TargetId__c='$TargetId'");
if ($target_restore) {
echo '1';
} else {
echo '0';
}
}
#### Delete Selected Record
public function deleteSelectedTarget(Request $request)
{
if (empty(session('UserId'))) {
return redirect('/admin/logout');
}
$id = $request->input('SelectedTarget');
if ($id) {
foreach ($id as $TargetId) {
$checkData = Performance::find($TargetId);
if ($checkData->IsDeleted == '0') {
$CreatedDate = date(
'Y-m-d H:i:s',
time()
);
$data = array();
$data['Updated_at'] = $CreatedDate;
$data['IsDeleted'] = '1';
$selected_entry = Performance::where('id', $TargetId)->update($data);
if ($selected_entry) {
echo '1';
} else {
echo '0';
}
} else {
$selected_entry = Performance::find($TargetId);
$selected_entry->delete();
}
}
}
return redirect()->back()->with('status_success');
}
### Edit Record
public function editTarget($TargetId)
{
$Performance = Performance::select('tbl_performance.*', 'tbl_performance_line_item.ProductId as ProductId', 'tbl_performance_line_item.ProductName as ProductName', 'tbl_performance_line_item.ProductPrice as ProductPrice', 'tbl_performance_line_item.TargetQuantity as TargetQuantity')
->leftJoin('tbl_performance_line_item', 'tbl_performance.TargetId', '=', 'tbl_performance_line_item.TargetId')
->where('tbl_performance.TargetId', $TargetId)
->get()->first();
return response()->json([
'status' => 200,
'Performance' => $Performance,
]);
}
}