File: /home/clientsoftwares/www/saagsystem.clientsoftwares.com/app/Http/Controllers/HomeController.php
<?php
namespace App\Http\Controllers;
use App\Models\Addon;
use App\Models\Address;
use App\Models\Category;
use App\Models\ColorTable;
use App\Models\Customer;
use App\Models\Damage;
use App\Models\FareManagement;
use App\Models\Order;
use App\Models\OrderItem;
use App\Models\PackingStyle;
use App\Models\Product;
use App\Models\Service;
use App\Models\Stain;
use App\Models\PromoCode;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule;
class HomeController extends Controller
{
public function index()
{
$services = Service::where('status', 1)->get();
$product = array();
foreach ($services as $service) {
$data['products'] = FareManagement::select('*')->where('service_id', $service->id)->where('status', 1)->get();
$prod = DB::table('fare_management')->join('products', 'products.id', '=', 'fare_management.product_id')
->select('fare_management.*', 'products.*')->where([
['products.status', 1],
['fare_management.service_id', $service->id]
])->get();
array_push($product, $prod);
}
$data['damages'] = Damage::all();
$data['stains'] = Stain::all();
$data['colors'] = ColorTable::all();
$data['packing_styles'] = PackingStyle::all();
$data['addons'] = Addon::all();
$data['discounts'] = PromoCode::all();
$data['products'] = $product;
$data['services'] = $services;
return view('home', $data);
}
public function getProduct(Request $request)
{
$data["type"] = 'success';
$data["iid"] = $request->item_id;
$data["item_name"] = $request->item_name;
$data["iron_price"] = $request->iron_price;
$data["price"] = $request->price;
$data["pieces"] = $request->pieces;
$data["service_id"] = $request->service_id;
echo json_encode($data);
}
public function getAddon(Request $request)
{
$data["response"] = 'success';
$data["item_id"] = $request->item_id;
$data["id"] = $request->id;
$data["addon_name"] = $request->addon_name;
$data["price"] = $request->price;
echo json_encode($data);
}
public function getPackingStyle(Request $request)
{
$data["response"] = 'success';
$data["item_id"] = $request->item_id;
$data["id"] = $request->id;
$data["packing_style"] = $request->packing_style_name;
$data["price"] = $request->price;
echo json_encode($data);
}
public function getColor(Request $request)
{
$data["response"] = 'success';
$data["item_id"] = $request->item_id;
$data["id"] = $request->id;
$data["color_name"] = $request->color_name;
echo json_encode($data);
}
public function checkEmail(Request $request)
{
$userCount = DB::table('customers')->where('email', $request->email)->get();
if($userCount->count())
{
$data["message"] = 'true';
}
echo json_encode($data);
}
public function checkLogin(Request $request)
{
if(Auth::guard('customer')->attempt(['email' => $request->email, 'password' => $request->password]))
{
$authUser = Auth::guard('customer')->user();
$data["status"] = 'success';
if($authUser->status !=1)
{
$data["status"] = 'not_active';
}
}
else
{
$data["status"] = 'passfail';
}
echo json_encode($data);
}
public function generateInvoice(Request $request)
{
$data["response"] = 'success';
(object)$customerData = [
'customer_name' => $request->first_name . " " . $request->last_name,
'email' => $request->cust_email,
'password' => Hash::make($request->password),
'status' => 1,
'phone_number' => $request->telephone,
];
if ($request->user_type == 'New User') {
$customer = Customer::create($customerData);
(object)$addressData = [
'customer_id' => $customer->id,
'customer_name' => $request->first_name. " " . $request->last_name,
'phone_number' => $request->telephone,
'address' => $request->address,
'locality' => $request->area,
'city' => $request->city,
'state' => $request->state,
'pincode' => $request->zip,
'country' => $request->country,
'location' => $request->location_id,
'status' => 1
];
$addressdata = Address::create($addressData);
}
$pickup_date = '';
$pickup_from_time = '';
if ($request->check_pickup == 'on') {
$pickup_date = date('Y-m-d', strtotime($request->pickup_date));
$pickup_from_time = date('H:i', strtotime($request->pickup_from_time));
}
$item_id = $request['item_id'];
$item_name = $request['item_name'];
$item_color1 = $request['item_color1'];
$item_color2 = $request['item_color2'];
$item_damage = $request['item_damage'];
$item_stains = $request['item_stains'];
$inc_packing_price = $request['inc_packing_price'];
$inc_addon_price = $request['inc_addon_price'];
$inc_packing_name = $request['inc_packing_name'];
$inc_addon_name = $request['inc_addon_name'];
$item_qty = $request['item_qty'];
$item_price = $request['item_price'];
$serviceid = $request['service'];
$iron_price = $request['td_iron_price'];
if (!empty($item_id)) {
for ($i=0; $i < count($item_id); $i++) {
$iron = 0;
if (!empty($request['check_iron'][$i]) && $request['check_iron'][$i] == 'on') {
$iron = 1;
}
(object)$invoiceItemData[] =
array(
'product_id' => $item_id[$i],
'color1' => DB::table('color_tables')->where('color_name', $item_color1[$i])->value('id'),
'color2' => DB::table('color_tables')->where('color_name', $item_color2[$i])->value('id'),
'packing_id' => DB::table('packing_styles')->where('packing_style', $inc_packing_name[$i])->value('id'),
'addon_id' => DB::table('addons')->where('addon_name', $inc_addon_name[$i])->value('id'),
'damage_id' => DB::table('damage')->where('damage', $item_damage[$i])->value('id'),
'stain_id' => DB::table('stains')->where('stains',$item_stains[$i])->value('id'),
'service_id' => $serviceid[$i],
'iron' => $iron,
'qty' => $item_qty[$i],
'price' => $item_price[$i],
'product_name' => $item_name[$i],
'service_name' => Service::where('id', $serviceid[$i])->value('service_name'),
'color1_name' => $item_color1[$i],
'color2_name' => $item_color2[$i],
'packing_name' => $inc_packing_name[$i],
'addon_name' => $inc_addon_name[$i],
'damage_name' => $item_damage[$i],
'stain_name' => $item_stains[$i],
'iron_price' => $iron_price[$i],
'packing_price' => $inc_packing_price[$i],
'addon_price' => $inc_addon_price[$i],
);
}
}
$orderdata = Order::create([
'customer_id' => $customer->id,
'address_id' => $addressdata->id,
'pickup_date' => $pickup_date,
'pickup_time' => $pickup_from_time,
'delivery_date' => date('Y-m-d', strtotime($request->ready_by_date)),
'delivery_time' => date('H:i', strtotime($request->ready_by_from_date)),
'total' => $request->grand_total,
'sub_total' => $request->subtotal,
's_discount' => $request->discount_percent,
'items' => json_encode($invoiceItemData),
'status' => 0
]);
$order_id = str_pad($orderdata->id, 5, "0", STR_PAD_LEFT);
Order::where('id',$orderdata->id)->update([ 'order_id' => $order_id]);
if (is_object($orderdata)) {
foreach ($invoiceItemData as $key => $value) {
$value['order_id'] = $orderdata->id;
OrderItem::create($value);
}
}
$data["last_id"] = $orderdata->id;
echo json_encode($data);
}
public function invoice_data(Request $request)
{
$orderdata = Order::find($request->id);
$customerdata = Customer::find($orderdata->customer_id);
$addressdata = Address::where([
['id',$orderdata->address_id],
['customer_id',$orderdata->customer_id]
])->first();
return view('invoice_details', compact('customerdata', 'addressdata', 'orderdata'));
}
public function invoice_print(Request $request)
{
$orderdata = Order::find($request->id);
$customerdata = Customer::find($orderdata->customer_id);
$addressdata = Address::where([
['id',$orderdata->address_id],
['customer_id',$orderdata->customer_id]
])->first();
return view('invoice_print', compact('customerdata', 'addressdata', 'orderdata'));
}
}