first commit
This commit is contained in:
219
app/Http/Controllers/Auth/AuthController.php
Normal file
219
app/Http/Controllers/Auth/AuthController.php
Normal file
@@ -0,0 +1,219 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\User;
|
||||
use App\Verify_accounts;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Socialite;
|
||||
use Route;
|
||||
use Config;
|
||||
|
||||
class AuthController extends Controller
|
||||
{
|
||||
public function login(Request $request) {
|
||||
$request->validate([
|
||||
'email' => 'required|string|email',
|
||||
'password' => 'required|string',
|
||||
//'remember_me' => 'boolean'
|
||||
]);
|
||||
$credentials = request(['email', 'password']);
|
||||
if(!Auth::attempt($credentials))
|
||||
return response()->json([
|
||||
'message' => 'Unauthorized'
|
||||
], 401);
|
||||
$user = $request->user();
|
||||
$tokenResult = $user->createToken('Personal Access Token');
|
||||
$token = $tokenResult->token;
|
||||
if ($request->remember_me)
|
||||
$token->expires_at = Carbon::now()->addWeeks(1);
|
||||
$token->save();
|
||||
return response()->json([
|
||||
'access_token' => $tokenResult->accessToken,
|
||||
'token_type' => 'Bearer',
|
||||
'expires_at' => Carbon::parse(
|
||||
$tokenResult->token->expires_at
|
||||
)->toDateTimeString(),
|
||||
'userid' => $user->id,
|
||||
'role' => $user->role_id,
|
||||
'verified' => $user->phone_verified_at,
|
||||
'reported' => $user->reported
|
||||
]);
|
||||
}
|
||||
|
||||
public function fb(Request $request)
|
||||
{
|
||||
$params = [
|
||||
'grant_type' => 'social',
|
||||
'client_id' => '2', // it should be password grant client
|
||||
'client_secret' => config('app.secret'),
|
||||
'provider' => 'facebook',
|
||||
'access_token' => $request->access_token // access token from provider
|
||||
];
|
||||
|
||||
$requestToken = Request::create("/oauth/token", "POST", $params);
|
||||
$response = app()->handle($requestToken);
|
||||
$json = json_decode($response->content(), true);
|
||||
$user = User::where('social_id', $request->social_id) -> first();
|
||||
$frontend = json_encode([
|
||||
'token_type' => $json['token_type'],
|
||||
'expires_at' => $json['expires_in'],
|
||||
'access_token' => $json['access_token'],
|
||||
'userid' => $user->id,
|
||||
'role' => $user->role_id,
|
||||
'verified' => $user->phone_verified_at,
|
||||
'reported' => $user->reported
|
||||
]);
|
||||
return $frontend;
|
||||
}
|
||||
|
||||
public function google(Request $request)
|
||||
{
|
||||
$params = [
|
||||
'grant_type' => 'social',
|
||||
'client_id' => '2', // it should be password grant client
|
||||
'client_secret' => config('app.secret'),
|
||||
'provider' => 'google',
|
||||
'access_token' => $request->access_token // access token from provider
|
||||
];
|
||||
|
||||
$requestToken = Request::create("/oauth/token", "POST", $params);
|
||||
$response = app()->handle($requestToken);
|
||||
$json = json_decode($response->content(), true);
|
||||
$user = User::where('social_id', $request->social_id) -> first();
|
||||
$frontend = json_encode([
|
||||
'token_type' => $json['token_type'],
|
||||
'expires_at' => $json['expires_in'],
|
||||
'access_token' => $json['access_token'],
|
||||
'userid' => $user->id,
|
||||
'role' => $user->role_id,
|
||||
'verified' => $user->phone_verified_at,
|
||||
'reported' => $user->reported
|
||||
]);
|
||||
return $frontend;
|
||||
}
|
||||
|
||||
public function apple(Request $request)
|
||||
{
|
||||
$params = [
|
||||
'grant_type' => 'social',
|
||||
'client_id' => '2', // it should be password grant client
|
||||
'client_secret' => config('app.secret'),
|
||||
'provider' => 'apple',
|
||||
'access_token' => $request->access_token // access token from provider
|
||||
];
|
||||
|
||||
$requestToken = Request::create("/oauth/token", "POST", $params);
|
||||
$response = app()->handle($requestToken);
|
||||
$json = json_decode($response->content(), true);
|
||||
$user = User::where('social_id', $request->social_id) -> first();
|
||||
$frontend = json_encode([
|
||||
'token_type' => $json['token_type'],
|
||||
'expires_at' => $json['expires_in'],
|
||||
'access_token' => $json['access_token'],
|
||||
'userid' => $user->id,
|
||||
'role' => $user->role_id,
|
||||
'verified' => $user->phone_verified_at,
|
||||
'reported' => $user->reported
|
||||
]);
|
||||
return $frontend;
|
||||
}
|
||||
|
||||
|
||||
public function register(Request $request)
|
||||
{
|
||||
$rules = [
|
||||
'name' => 'required|string|regex:/(^[a-zA-Z\s ÑñÁáÉéÍíÓóÚúÜü]+$)+/',
|
||||
'email' => 'required|string|email|unique:users',
|
||||
'phone' => 'required|numeric',
|
||||
'password' => 'required|string',
|
||||
'secret' => 'required|string'
|
||||
];
|
||||
|
||||
$messages = [
|
||||
'email.unique' => 'Correo electronico ya registrado',
|
||||
];
|
||||
|
||||
$validator = Validator::make($request->all(), $rules, $messages);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return response()->json([
|
||||
'message' => $validator->messages()->first()
|
||||
], 422);
|
||||
}
|
||||
|
||||
if ($request->secret == config('app.pass')) {
|
||||
|
||||
/**$verify = new Verify_accounts;
|
||||
$verify->name = $request->name;
|
||||
$verify->email = $request->email;
|
||||
$verify->password = bcrypt($request->password);
|
||||
$verify->token = str_random(70);
|
||||
|
||||
$verify->save(); */
|
||||
|
||||
$user = new User;
|
||||
$user->name = $request->name;
|
||||
$user->email = $request->email;
|
||||
$user->phone = $request->phone;
|
||||
$user->password = bcrypt($request->password);
|
||||
$user->role_id = "1";
|
||||
$user->save();
|
||||
|
||||
return response()->json([
|
||||
'message' => 'Successfully created user!'
|
||||
], 201);
|
||||
} else {
|
||||
return response()->json([
|
||||
'message' => 'Puto el que la hackee'
|
||||
], 201);
|
||||
}
|
||||
}
|
||||
public function logout(Request $request)
|
||||
{
|
||||
$request->user()->token()->revoke();
|
||||
return response()->json([
|
||||
'message' => 'Successfully logged out'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the authenticated User
|
||||
*
|
||||
* @return [json] user object
|
||||
*/
|
||||
public function user(Request $request)
|
||||
{
|
||||
return response()->json($request->user());
|
||||
}
|
||||
|
||||
public function checkemail($token)
|
||||
{
|
||||
$verifyUser = Verify_accounts::where('token', $token)->first();
|
||||
$user = new User;
|
||||
$user->name = $verifyUser->name;
|
||||
$user->email = $verifyUser->email;
|
||||
$user->password = $verifyUser->password;
|
||||
$user->role_id = "1";
|
||||
$user->save();
|
||||
Verify_accounts::destroy($verifyUser->id);
|
||||
}
|
||||
|
||||
public function verify(Request $request)
|
||||
{
|
||||
$user = $request->user();
|
||||
|
||||
$user->phone = $request->phone;
|
||||
$user->phone_verified_at = date("Y-m-d H:i:s");
|
||||
|
||||
$user->save();
|
||||
|
||||
return response()->json([
|
||||
'message' => 'Successfully updated'
|
||||
]);
|
||||
}
|
||||
}
|
||||
51
app/Http/Controllers/Auth/ForgotPasswordController.php
Normal file
51
app/Http/Controllers/Auth/ForgotPasswordController.php
Normal file
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
|
||||
|
||||
class ForgotPasswordController extends Controller
|
||||
{
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reset Controller
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This controller is responsible for handling password reset emails and
|
||||
| includes a trait which assists in sending these notifications from
|
||||
| your application to your users. Feel free to explore this trait.
|
||||
|
|
||||
*/
|
||||
|
||||
use SendsPasswordResetEmails;
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('guest');
|
||||
}
|
||||
|
||||
protected function sendResetLinkResponse($response)
|
||||
{
|
||||
if (request()->header('Content-Type') == 'application/json') {
|
||||
return response()->json(['success' => 'Email enviado con éxito.']);
|
||||
}
|
||||
return back()->with('status', 'Email enviado con éxito.');
|
||||
}
|
||||
|
||||
protected function sendResetLinkFailedResponse($response)
|
||||
{
|
||||
if (request()->header('Content-Type') == 'application/json') {
|
||||
return response()->json(['error' => 'Por favor contacte a soporte técnico.']);
|
||||
}
|
||||
|
||||
return back()->withErrors(
|
||||
['email' => 'Ha ocurrido un error']
|
||||
);
|
||||
}
|
||||
}
|
||||
71
app/Http/Controllers/Auth/LoginController.php
Normal file
71
app/Http/Controllers/Auth/LoginController.php
Normal file
@@ -0,0 +1,71 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Foundation\Auth\AuthenticatesUsers;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Http\Request;
|
||||
use Auth;
|
||||
use Socialite;
|
||||
use Route;
|
||||
use App\User;
|
||||
|
||||
class LoginController extends Controller
|
||||
{
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Login Controller
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This controller handles authenticating users for the application and
|
||||
| redirecting them to your home screen. The controller uses a trait
|
||||
| to conveniently provide its functionality to your applications.
|
||||
|
|
||||
*/
|
||||
|
||||
use AuthenticatesUsers;
|
||||
|
||||
/**
|
||||
* Where to redirect users after login.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $redirectTo = '/home';
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('guest')->except('logout');
|
||||
}
|
||||
|
||||
public function redirectToProvider($provider)
|
||||
{
|
||||
return Socialite::driver($provider)->redirect();
|
||||
}
|
||||
|
||||
public function handleProviderCallback($provider)
|
||||
{
|
||||
$user = Socialite::driver($provider)->user();
|
||||
$authUser = $this->findUser($user, $provider);
|
||||
|
||||
Auth::login($authUser, true);
|
||||
return redirect($this->redirectTo);
|
||||
}
|
||||
public function findUser($user, $provider) {
|
||||
$authUser = User::where('social_id', $user->id . '_' . $provider)->first();
|
||||
if($authUser) {
|
||||
return $authUser;
|
||||
}
|
||||
return User::create([
|
||||
'name' => $user->getName(),
|
||||
'email' => $user->getEmail(),
|
||||
'social_id' => $user->getId() . '_' . $provider,
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
||||
77
app/Http/Controllers/Auth/RegisterController.php
Normal file
77
app/Http/Controllers/Auth/RegisterController.php
Normal file
@@ -0,0 +1,77 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\User;
|
||||
use Carbon\Carbon;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Illuminate\Foundation\Auth\RegistersUsers;
|
||||
|
||||
class RegisterController extends Controller
|
||||
{
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Register Controller
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This controller handles the registration of new users as well as their
|
||||
| validation and creation. By default this controller uses a trait to
|
||||
| provide this functionality without requiring any additional code.
|
||||
|
|
||||
*/
|
||||
|
||||
use RegistersUsers;
|
||||
|
||||
/**
|
||||
* Where to redirect users after registration.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $redirectTo = '/home';
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('guest');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a validator for an incoming registration request.
|
||||
*
|
||||
* @param array $data
|
||||
* @return \Illuminate\Contracts\Validation\Validator
|
||||
*/
|
||||
protected function validator(array $data)
|
||||
{
|
||||
return Validator::make($data, [
|
||||
'name' => ['required', 'string', 'max:255'],
|
||||
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
|
||||
'phone' => ['required', 'string', 'min:8', 'max:255', 'unique:users'],
|
||||
'password' => ['required', 'string', 'min:8', 'confirmed'],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new user instance after a valid registration.
|
||||
*
|
||||
* @param array $data
|
||||
* @return \App\User
|
||||
*/
|
||||
protected function create(array $data)
|
||||
{
|
||||
return User::create([
|
||||
'name' => $data['name'],
|
||||
'email' => $data['email'],
|
||||
'phone' => $data['phone'],
|
||||
'phone_verified_at' => Carbon::now(),
|
||||
'role_id' => '2',
|
||||
'password' => Hash::make($data['password']),
|
||||
]);
|
||||
}
|
||||
}
|
||||
39
app/Http/Controllers/Auth/ResetPasswordController.php
Normal file
39
app/Http/Controllers/Auth/ResetPasswordController.php
Normal file
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Foundation\Auth\ResetsPasswords;
|
||||
|
||||
class ResetPasswordController extends Controller
|
||||
{
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reset Controller
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This controller is responsible for handling password reset requests
|
||||
| and uses a simple trait to include this behavior. You're free to
|
||||
| explore this trait and override any methods you wish to tweak.
|
||||
|
|
||||
*/
|
||||
|
||||
use ResetsPasswords;
|
||||
|
||||
/**
|
||||
* Where to redirect users after resetting their password.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $redirectTo = '/home';
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('guest');
|
||||
}
|
||||
}
|
||||
41
app/Http/Controllers/Auth/VerificationController.php
Normal file
41
app/Http/Controllers/Auth/VerificationController.php
Normal file
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Foundation\Auth\VerifiesEmails;
|
||||
|
||||
class VerificationController extends Controller
|
||||
{
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Email Verification Controller
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This controller is responsible for handling email verification for any
|
||||
| user that recently registered with the application. Emails may also
|
||||
| be re-sent if the user didn't receive the original email message.
|
||||
|
|
||||
*/
|
||||
|
||||
use VerifiesEmails;
|
||||
|
||||
/**
|
||||
* Where to redirect users after verification.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $redirectTo = '/home';
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('auth');
|
||||
$this->middleware('signed')->only('verify');
|
||||
$this->middleware('throttle:6,1')->only('verify', 'resend');
|
||||
}
|
||||
}
|
||||
162
app/Http/Controllers/BanksController.php
Normal file
162
app/Http/Controllers/BanksController.php
Normal file
@@ -0,0 +1,162 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\Banks;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
|
||||
class BanksController extends Controller
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
//
|
||||
$request->session()->put('search', $request
|
||||
->has('search') ? strip_tags($request->get('search')) : ($request->session()
|
||||
->has('search') ? strip_tags($request->session()->get('search')) : ''));
|
||||
|
||||
$request->session()->put('field', $request
|
||||
->has('field') ? strip_tags($request->get('field')) : ($request->session()
|
||||
->has('field') ? strip_tags($request->session()->get('field')) : 'id'));
|
||||
|
||||
$request->session()->put('sort', $request
|
||||
->has('sort') ? strip_tags($request->get('sort')) : ($request->session()
|
||||
->has('sort') ? strip_tags($request->session()->get('sort')) : 'asc'));
|
||||
|
||||
//$headers = $request->get('header') != '' ? $request->get('header') : -1;
|
||||
|
||||
$banks = new Banks();
|
||||
$banks = $banks->where('id', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('code', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('name', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orderBy(strip_tags($request->session()->get('field')), strip_tags($request->session()->get('sort')))
|
||||
->paginate(10);
|
||||
|
||||
if ($request->ajax()) {
|
||||
return view('banks.index', compact('banks'));
|
||||
} else {
|
||||
return view('banks.ajax', compact('banks'));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for creating a new resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function create(Request $request)
|
||||
{
|
||||
//
|
||||
if ($request->isMethod('get'))
|
||||
return view('banks.form');
|
||||
|
||||
$rules = [
|
||||
'code' => 'required|numeric',
|
||||
'name' => 'required|string',
|
||||
];
|
||||
|
||||
$messages = [
|
||||
'code.required' => 'Se requiere un valor de código',
|
||||
'name.required' => 'Se requiere el nombre del banco',
|
||||
];
|
||||
|
||||
$validator = Validator::make($request->all(), $rules, $messages);
|
||||
if ($validator->fails()) {
|
||||
return redirect()->back()->withInput($request->all())->withErrors($validator);
|
||||
}
|
||||
|
||||
$bank = new Banks();
|
||||
$bank->code = $request->code;
|
||||
$bank->name = strip_tags($request->name);
|
||||
$bank->save();
|
||||
|
||||
return redirect('banks');
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the specified resource.
|
||||
*
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function show($id)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for editing the specified resource.
|
||||
*
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function edit($id)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function update(Request $request, $id)
|
||||
{
|
||||
//
|
||||
if ($request->isMethod('get'))
|
||||
return view('banks.form',['bank' => Banks::find($id)]);
|
||||
|
||||
$rules = [
|
||||
'code' => 'required|numeric',
|
||||
'name' => 'required|string',
|
||||
];
|
||||
|
||||
$messages = [
|
||||
'code.required' => 'Se requiere un valor de código',
|
||||
'name.required' => 'Se requiere el nombre del banco',
|
||||
];
|
||||
|
||||
$validator = Validator::make($request->all(), $rules, $messages);
|
||||
if ($validator->fails()) {
|
||||
return redirect()->back()->withInput($request->all())->withErrors($validator);
|
||||
}
|
||||
|
||||
$bank = Banks::find($id);
|
||||
$bank->code = $request->code;
|
||||
$bank->name = strip_tags($request->name);
|
||||
$bank->save();
|
||||
|
||||
return redirect('banks');
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function destroy($id)
|
||||
{
|
||||
Banks::destroy($id);
|
||||
return redirect('banks');
|
||||
}
|
||||
}
|
||||
161
app/Http/Controllers/CategoriesController.php
Normal file
161
app/Http/Controllers/CategoriesController.php
Normal file
@@ -0,0 +1,161 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\Categories;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
|
||||
class CategoriesController extends Controller
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
//
|
||||
$request->session()->put('search', $request
|
||||
->has('search') ? strip_tags($request->get('search')) : ($request->session()
|
||||
->has('search') ? strip_tags($request->session()->get('search')) : ''));
|
||||
|
||||
$request->session()->put('field', $request
|
||||
->has('field') ? strip_tags($request->get('field')) : ($request->session()
|
||||
->has('field') ? strip_tags($request->session()->get('field')) : 'id'));
|
||||
|
||||
$request->session()->put('sort', $request
|
||||
->has('sort') ? strip_tags($request->get('sort')) : ($request->session()
|
||||
->has('sort') ? strip_tags($request->session()->get('sort')) : 'asc'));
|
||||
|
||||
//$headers = $request->get('header') != '' ? $request->get('header') : -1;
|
||||
|
||||
$categories = new Categories();
|
||||
$categories = $categories->where('id', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('name', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orderBy(strip_tags($request->session()->get('field')), strip_tags($request->session()->get('sort')))
|
||||
->paginate(10);
|
||||
|
||||
if ($request->ajax()) {
|
||||
return view('categories.index', compact('categories'));
|
||||
} else {
|
||||
return view('categories.ajax', compact('categories'));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for creating a new resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function create(Request $request)
|
||||
{
|
||||
//
|
||||
if ($request->isMethod('get'))
|
||||
return view('categories.form');
|
||||
|
||||
$rules = [
|
||||
'name' => 'required|string',
|
||||
'en_name' => 'required|string',
|
||||
];
|
||||
|
||||
$messages = [
|
||||
'name.required' => 'Se requiere el nombre de la categoría',
|
||||
'en_name.required' => 'Se requiere el nombre de la categoría (en ingles)',
|
||||
];
|
||||
|
||||
$validator = Validator::make($request->all(), $rules, $messages);
|
||||
if ($validator->fails()) {
|
||||
return redirect()->back()->withInput($request->all())->withErrors($validator);
|
||||
}
|
||||
|
||||
$category = new Categories();
|
||||
$category->name = strip_tags($request->name);
|
||||
$category->en_name = strip_tags($request->en_name);
|
||||
$category->save();
|
||||
|
||||
return redirect('categories');
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the specified resource.
|
||||
*
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function show($id)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for editing the specified resource.
|
||||
*
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function edit($id)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function update(Request $request, $id)
|
||||
{
|
||||
//
|
||||
if ($request->isMethod('get'))
|
||||
return view('categories.form',['category' => Categories::find($id)]);
|
||||
|
||||
$rules = [
|
||||
'name' => 'required|string',
|
||||
'en_name' => 'required|string',
|
||||
];
|
||||
|
||||
$messages = [
|
||||
'name.required' => 'Se requiere el nombre de la categoría',
|
||||
'en_name.required' => 'Se requiere el nombre de la categoría (en ingles)',
|
||||
];
|
||||
|
||||
$validator = Validator::make($request->all(), $rules, $messages);
|
||||
if ($validator->fails()) {
|
||||
return redirect()->back()->withInput($request->all())->withErrors($validator);
|
||||
}
|
||||
|
||||
$category = Categories::find($id);
|
||||
$category->name = strip_tags($request->name);
|
||||
$category->en_name = strip_tags($request->en_name);
|
||||
$category->save();
|
||||
|
||||
return redirect('categories');
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function destroy($id)
|
||||
{
|
||||
Categories::destroy($id);
|
||||
return redirect('categories');
|
||||
}
|
||||
}
|
||||
994
app/Http/Controllers/ContractController.php
Normal file
994
app/Http/Controllers/ContractController.php
Normal file
@@ -0,0 +1,994 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\User;
|
||||
use Carbon\Carbon;
|
||||
use OneSignal;
|
||||
use Openpay;
|
||||
use Exception;
|
||||
use OpenpayApiError;
|
||||
use OpenpayApiAuthError;
|
||||
use OpenpayApiRequestError;
|
||||
use OpenpayApiConnectionError;
|
||||
use OpenpayApiTransactionError;
|
||||
use App\iChambaParameter;
|
||||
use App\Models\Suppliers;
|
||||
use App\Models\Categories;
|
||||
use App\Models\Cards;
|
||||
use App\Models\Postulations;
|
||||
use App\Models\CurrentContracts;
|
||||
use App\Models\FinishedContracts;
|
||||
use App\Models\Status;
|
||||
use App\Models\Payments;
|
||||
use App\Models\Coupon;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Grimzy\LaravelMysqlSpatial\Types\Point;
|
||||
|
||||
class ContractController extends Controller
|
||||
{
|
||||
//
|
||||
|
||||
public function currentcontracts(Request $request)
|
||||
{
|
||||
//
|
||||
$request->session()->put('search', $request
|
||||
->has('search') ? strip_tags($request->get('search')) : ($request->session()
|
||||
->has('search') ? strip_tags($request->session()->get('search')) : ''));
|
||||
|
||||
$request->session()->put('field', $request
|
||||
->has('field') ? strip_tags($request->get('field')) : ($request->session()
|
||||
->has('field') ? strip_tags($request->session()->get('field')) : 'id'));
|
||||
|
||||
$request->session()->put('sort', $request
|
||||
->has('sort') ? strip_tags($request->get('sort')) : ($request->session()
|
||||
->has('sort') ? strip_tags($request->session()->get('sort')) : 'asc'));
|
||||
|
||||
//$headers = $request->get('header') != '' ? $request->get('header') : -1;
|
||||
|
||||
$currentcontracts = new CurrentContracts();
|
||||
$currentcontracts = $currentcontracts->where('id', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('user_id', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('address', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('amount', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orderBy(strip_tags($request->session()->get('field')), strip_tags($request->session()->get('sort')))
|
||||
->paginate(10);
|
||||
|
||||
if ($request->ajax()) {
|
||||
return view('currentcontracts.index', compact('currentcontracts'));
|
||||
} else {
|
||||
return view('currentcontracts.ajax', compact('currentcontracts'));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function mapcurrentcontracts(Request $request)
|
||||
{
|
||||
//
|
||||
$request->session()->put('search', $request
|
||||
->has('search') ? strip_tags($request->get('search')) : ($request->session()
|
||||
->has('search') ? strip_tags($request->session()->get('search')) : ''));
|
||||
|
||||
$request->session()->put('field', $request
|
||||
->has('field') ? strip_tags($request->get('field')) : ($request->session()
|
||||
->has('field') ? strip_tags($request->session()->get('field')) : 'id'));
|
||||
|
||||
$request->session()->put('sort', $request
|
||||
->has('sort') ? strip_tags($request->get('sort')) : ($request->session()
|
||||
->has('sort') ? strip_tags($request->session()->get('sort')) : 'asc'));
|
||||
|
||||
//$headers = $request->get('header') != '' ? $request->get('header') : -1;
|
||||
|
||||
$currentcontracts = new CurrentContracts();
|
||||
$currentcontracts = $currentcontracts->where('id', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('user_id', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('address', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('amount', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orderBy(strip_tags($request->session()->get('field')), strip_tags($request->session()->get('sort')))
|
||||
->paginate(10);
|
||||
|
||||
return view('currentcontracts.map', compact('currentcontracts'));
|
||||
|
||||
}
|
||||
|
||||
public function finishedcontracts(Request $request)
|
||||
{
|
||||
//
|
||||
$request->session()->put('search', $request
|
||||
->has('search') ? strip_tags($request->get('search')) : ($request->session()
|
||||
->has('search') ? strip_tags($request->session()->get('search')) : ''));
|
||||
|
||||
$request->session()->put('field', $request
|
||||
->has('field') ? strip_tags($request->get('field')) : ($request->session()
|
||||
->has('field') ? strip_tags($request->session()->get('field')) : 'id'));
|
||||
|
||||
$request->session()->put('sort', $request
|
||||
->has('sort') ? strip_tags($request->get('sort')) : ($request->session()
|
||||
->has('sort') ? strip_tags($request->session()->get('sort')) : 'asc'));
|
||||
|
||||
//$headers = $request->get('header') != '' ? $request->get('header') : -1;
|
||||
|
||||
$finishedcontracts = new FinishedContracts();
|
||||
$finishedcontracts = $finishedcontracts->where('id', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('user_id', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('address', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('amount', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orderBy(strip_tags($request->session()->get('field')), strip_tags($request->session()->get('sort')))
|
||||
->paginate(10);
|
||||
|
||||
if ($request->ajax()) {
|
||||
return view('finishedcontracts.index', compact('finishedcontracts'));
|
||||
} else {
|
||||
return view('finishedcontracts.ajax', compact('finishedcontracts'));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function mapfinishedcontracts(Request $request)
|
||||
{
|
||||
//
|
||||
$request->session()->put('search', $request
|
||||
->has('search') ? strip_tags($request->get('search')) : ($request->session()
|
||||
->has('search') ? strip_tags($request->session()->get('search')) : ''));
|
||||
|
||||
$request->session()->put('field', $request
|
||||
->has('field') ? strip_tags($request->get('field')) : ($request->session()
|
||||
->has('field') ? strip_tags($request->session()->get('field')) : 'id'));
|
||||
|
||||
$request->session()->put('sort', $request
|
||||
->has('sort') ? strip_tags($request->get('sort')) : ($request->session()
|
||||
->has('sort') ? strip_tags($request->session()->get('sort')) : 'asc'));
|
||||
|
||||
//$headers = $request->get('header') != '' ? $request->get('header') : -1;
|
||||
|
||||
$finishedcontracts = new FinishedContracts();
|
||||
$finishedcontracts = $finishedcontracts->where('id', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('user_id', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('address', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('amount', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orderBy(strip_tags($request->session()->get('field')), strip_tags($request->session()->get('sort')))
|
||||
->paginate(10);
|
||||
|
||||
return view('finishedcontracts.map', compact('finishedcontracts'));
|
||||
|
||||
}
|
||||
|
||||
public function create(Request $request) {
|
||||
|
||||
$rules = [
|
||||
'postulation_id' => 'required|numeric',
|
||||
'supplier_id' => 'required|numeric',
|
||||
'card_id' => 'required|numeric',
|
||||
'code' => 'required|numeric',
|
||||
'device_id' => 'required|string|regex:/(^[A-Za-z0-9 ]+$)+/',
|
||||
'coupon' => 'nullable|string|regex:/(^[A-Za-z0-9 ]+$)+/',
|
||||
];
|
||||
|
||||
$validator = Validator::make($request->all(), $rules);
|
||||
if ($validator->fails()) {
|
||||
return redirect()->back()->withInput($request->all())->withErrors($validator);
|
||||
} else {
|
||||
|
||||
$user = Auth::user();
|
||||
$postulation = Postulations::where('id', $request->postulation_id)->first();
|
||||
$coupon = Coupon::where('name', $request->coupon)->first();
|
||||
Openpay::setProductionMode(true);
|
||||
|
||||
if ($user->id == $postulation->user_id) {
|
||||
|
||||
if ($request->card_id) {
|
||||
$card = Cards::where('id', $request->card_id)->first();
|
||||
}
|
||||
$supplier = Suppliers::where('id', $request->supplier_id)->first();
|
||||
|
||||
$IVA = iChambaParameter::where('id', $supplier->IVA_id)->first();
|
||||
$ISR = iChambaParameter::where('id', $supplier->ISR_id)->first();
|
||||
|
||||
$ichambafee = iChambaParameter::where('parameter', 'ichamba_fee')->first();
|
||||
$category = Categories::where('id', $postulation->category_id)->first();
|
||||
|
||||
if ($card->user_id == $user->id) {
|
||||
|
||||
$contract = new CurrentContracts();
|
||||
$contract->user_id = $postulation->user_id;
|
||||
$contract->supplier_id = $supplier->id;
|
||||
$contract->category_id = $postulation->category_id;
|
||||
$contract->address = $postulation->address;
|
||||
$contract->location = $postulation->location;
|
||||
if (isset($postulation->int_number)) {
|
||||
$contract->int_number = $postulation->int_number;
|
||||
} else {
|
||||
$contract->int_number = 0;
|
||||
}
|
||||
$contract->references = $postulation->references;
|
||||
$contract->appointment = $postulation->appointment;
|
||||
$contract->amount = ($supplier->minimun_fee < 150 ? 150 : $supplier->minimun_fee);
|
||||
if (isset($IVA->num_value) && isset($IVA->num_value)) {
|
||||
$contract->IVA = $IVA->num_value;
|
||||
$contract->ISR = $ISR->num_value;
|
||||
$contract->revenue = ((($supplier->minimun_fee < 150 ? 150 : $supplier->minimun_fee) * ((100 - $ichambafee->num_value) / 100)) * ((100 - $IVA->num_value - $ISR->num_value) / 100));
|
||||
} else {
|
||||
$contract->IVA = 0;
|
||||
$contract->ISR = 0;
|
||||
$contract->revenue = (($supplier->minimun_fee < 150 ? 150 : $supplier->minimun_fee) * ((100 - $ichambafee->num_value) / 100));
|
||||
}
|
||||
$contract->ichamba_fee = $ichambafee->num_value;
|
||||
$contract->details = $postulation->details;
|
||||
$contract->en = $postulation->en;
|
||||
|
||||
if ($coupon) {
|
||||
|
||||
$checkccontracts = CurrentContracts::where('coupon_id', $coupon->id)->where('user_id', $user->id)->first();
|
||||
$checkfcontracts = FinishedContracts::where('coupon_id', $coupon->id)->where('user_id', $user->id)->first();
|
||||
|
||||
if ($coupon->limit > 0) {
|
||||
if(!isset($checkccontracts) && !isset($checkccontracts)) {
|
||||
|
||||
$fee = ($supplier->minimun_fee < 150 ? 150 : $supplier->minimun_fee);
|
||||
$discount = (($fee*(($coupon->percentage = null ? 0 : $coupon->percentage)/100))+($coupon->amount = null ? 0 : $coupon->amount));
|
||||
|
||||
$contract->coupon_id = $coupon->id;
|
||||
$chargeData = array(
|
||||
'source_id' => $card->token,
|
||||
'method' => 'card',
|
||||
'amount' => ((($supplier->minimun_fee < 150 ? 150 : $supplier->minimun_fee)*(1 - (($coupon->percentage = null ? 0 : $coupon->percentage)/100)))-($coupon->amount = null ? 0 : $coupon->amount)),
|
||||
'description' => ('Contrato del usuario: ' . $user->name . ' del servicio ' . $category->name . ' realizado por el proveedor: ' . $supplier->company_name),
|
||||
'device_session_id' => $request->device_id,
|
||||
'cvv2' => $request->code
|
||||
);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
$fee = ($supplier->minimun_fee < 150 ? 150 : $supplier->minimun_fee);
|
||||
$discount = 0;
|
||||
|
||||
$contract->coupon_id = null;
|
||||
$chargeData = array(
|
||||
'source_id' => $card->token,
|
||||
'method' => 'card',
|
||||
'amount' => ($supplier->minimun_fee < 150 ? 150 : $supplier->minimun_fee),
|
||||
'description' => ('Contrato del usuario: ' . $user->name . ' del servicio ' . $category->name . ' realizado por el proveedor: ' . $supplier->company_name),
|
||||
'device_session_id' => $request->device_id,
|
||||
'cvv2' => $request->code
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
if (!empty($request->card_id) && !empty($request->device_id) && !empty($request->code) && $fee > $discount) {
|
||||
try {
|
||||
$openpay = Openpay::getInstance(config('app.openpay_id'), config('app.openpay_apikey'));
|
||||
|
||||
$customer = $openpay->customers->get($user->openpay_id);
|
||||
$charge = $customer->charges->create($chargeData);
|
||||
|
||||
|
||||
} catch (OpenpayApiTransactionError $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'No se pudo procesar la transacción'
|
||||
]);
|
||||
} catch (OpenpayApiRequestError $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'No se pudo procesar la operación'
|
||||
]);
|
||||
} catch (OpenpayApiConnectionError $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'Error al conectarse a Openpay:' . $e->getMessage()
|
||||
]);
|
||||
|
||||
} catch (OpenpayApiAuthError $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'Error al conectarse a Openpay' . $e->getMessage()
|
||||
]);
|
||||
|
||||
} catch (OpenpayApiError $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'Error al conectarse a Openpay' . $e->getMessage()
|
||||
]);
|
||||
} catch (Exception $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'Error: ' . $e->getMessage()
|
||||
]);
|
||||
}
|
||||
|
||||
$contract->transaction_id = $charge->id;
|
||||
|
||||
} else if ($coupon) {
|
||||
if ($coupon->limit > 0 && $discount >= $fee) {
|
||||
if(!isset($checkccontracts) && !isset($checkccontracts)) {
|
||||
$coupon->limit = $coupon->limit - 1;
|
||||
$coupon->save();
|
||||
|
||||
$contract->transaction_id = $coupon->name;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$contract->status_id = 1;
|
||||
$contract->code = mt_rand(100000, 999999);
|
||||
$contract->save();
|
||||
|
||||
$delay_UTC = Carbon::parse($contract->appointment)->subMinutes(30)->toString();
|
||||
|
||||
Postulations::destroy($request->postulation_id);
|
||||
|
||||
OneSignal::sendNotificationUsingTags(
|
||||
"Dirígete a la sección de postulaciones contratadas en la app para ver más detalles",
|
||||
array(
|
||||
["field" => "tag", "key" => "iChamba_ID", "relation" => "=", "value" => $supplier->user_id]
|
||||
),
|
||||
$url = null,
|
||||
$data = null,
|
||||
$buttons = null,
|
||||
$schedule = null,
|
||||
$headings = "Proveedor: has sido contratado"
|
||||
);
|
||||
|
||||
//Schedule a notification for the supplier about its appointment
|
||||
OneSignal::sendNotificationUsingTags(
|
||||
"Tienes un servicio en " . $contract->address . " hoy en 30 minutos. Dírigeta a la sección de postulaciones contratados para más detalles",
|
||||
array(
|
||||
["field" => "tag", "key" => "iChamba_ID", "relation" => "=", "value" => $supplier->user_id]
|
||||
),
|
||||
$url = null,
|
||||
$data = null,
|
||||
$buttons = null,
|
||||
$schedule = $delay_UTC,
|
||||
$headings = "Proveedor, no olvides tu cita de hoy"
|
||||
);
|
||||
|
||||
//Schedule a notification for the user about its appointment
|
||||
OneSignal::sendNotificationUsingTags(
|
||||
"Tienes un servicio agendado hoy en " . $contract->address . " en 30 minutos. Dírigeta a la sección de contratos confirmados para más detalles",
|
||||
array(
|
||||
["field" => "tag", "key" => "iChamba_ID", "relation" => "=", "value" => $user->id]
|
||||
),
|
||||
$url = null,
|
||||
$data = null,
|
||||
$buttons = null,
|
||||
$schedule = $delay_UTC,
|
||||
$headings = $user->name . ", no olvides tu cita de hoy"
|
||||
);
|
||||
|
||||
return response()->json([
|
||||
'message' => 'Servicio contratado exitosamente'
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function coupon(Request $request) {
|
||||
|
||||
$rules = [
|
||||
'postulation_id' => 'required|numeric',
|
||||
'supplier_id' => 'required|numeric',
|
||||
'coupon' => 'required|string|regex:/(^[A-Za-z0-9 ]+$)+/',
|
||||
];
|
||||
|
||||
$validator = Validator::make($request->all(), $rules);
|
||||
if ($validator->fails()) {
|
||||
return redirect()->back()->withInput($request->all())->withErrors($validator);
|
||||
} else {
|
||||
|
||||
$user = Auth::user();
|
||||
$postulation = Postulations::where('id', $request->postulation_id)->first();
|
||||
$coupon = Coupon::where('name', $request->coupon)->first();
|
||||
|
||||
if($coupon) {
|
||||
|
||||
if ($user->id == $postulation->user_id) {
|
||||
|
||||
$supplier = Suppliers::where('id', $request->supplier_id)->first();
|
||||
|
||||
$IVA = iChambaParameter::where('id', $supplier->IVA_id)->first();
|
||||
$ISR = iChambaParameter::where('id', $supplier->ISR_id)->first();
|
||||
|
||||
$ichambafee = iChambaParameter::where('parameter', 'ichamba_fee')->first();
|
||||
$category = Categories::where('id', $postulation->category_id)->first();
|
||||
$checkccontracts = CurrentContracts::where('coupon_id', $coupon->id)->where('user_id', $user->id)->first();
|
||||
$checkfcontracts = FinishedContracts::where('coupon_id', $coupon->id)->where('user_id', $user->id)->first();
|
||||
|
||||
if (!isset($checkccontracts) && !isset($checkccontracts)) {
|
||||
if($coupon->percentage == 100) {
|
||||
if($coupon->limit > 0) {
|
||||
|
||||
$contract = new CurrentContracts();
|
||||
$contract->user_id = $postulation->user_id;
|
||||
$contract->supplier_id = $supplier->id;
|
||||
$contract->category_id = $postulation->category_id;
|
||||
$contract->address = $postulation->address;
|
||||
$contract->location = $postulation->location;
|
||||
if (isset($postulation->int_number)) {
|
||||
$contract->int_number = $postulation->int_number;
|
||||
} else {
|
||||
$contract->int_number = 0;
|
||||
}
|
||||
$contract->references = $postulation->references;
|
||||
$contract->appointment = $postulation->appointment;
|
||||
$contract->amount = ($supplier->minimun_fee < 150 ? 150 : $supplier->minimun_fee);
|
||||
if (isset($IVA->num_value) && isset($IVA->num_value)) {
|
||||
$contract->IVA = $IVA->num_value;
|
||||
$contract->ISR = $ISR->num_value;
|
||||
$contract->revenue = ((($supplier->minimun_fee < 150 ? 150 : $supplier->minimun_fee) * ((100 - $ichambafee->num_value) / 100)) * ((100 - $IVA->num_value - $ISR->num_value) / 100));
|
||||
} else {
|
||||
$contract->IVA = 0;
|
||||
$contract->ISR = 0;
|
||||
$contract->revenue = (($supplier->minimun_fee < 150 ? 150 : $supplier->minimun_fee) * ((100 - $ichambafee->num_value) / 100));
|
||||
}
|
||||
$contract->ichamba_fee = $ichambafee->num_value;
|
||||
$contract->details = $postulation->details;
|
||||
$contract->en = $postulation->en;
|
||||
$contract->coupon_id = $coupon->id;
|
||||
$contract->transaction_id = $coupon->name;
|
||||
$contract->status_id = 1;
|
||||
$contract->code = mt_rand(100000, 999999);
|
||||
$contract->save();
|
||||
|
||||
$delay_UTC = Carbon::parse($contract->appointment)->subMinutes(30)->toString();
|
||||
|
||||
Postulations::destroy($request->postulation_id);
|
||||
|
||||
OneSignal::sendNotificationUsingTags(
|
||||
"Dirígete a la sección de postulaciones contratadas en la app para ver más detalles",
|
||||
array(
|
||||
["field" => "tag", "key" => "iChamba_ID", "relation" => "=", "value" => $supplier->user_id]
|
||||
),
|
||||
$url = null,
|
||||
$data = null,
|
||||
$buttons = null,
|
||||
$schedule = null,
|
||||
$headings = "Proveedor: has sido contratado"
|
||||
);
|
||||
|
||||
//Schedule a notification for the supplier about its appointment
|
||||
OneSignal::sendNotificationUsingTags(
|
||||
"Tienes un servicio en " . $contract->address . " hoy en 30 minutos. Dírigeta a la sección de postulaciones contratados para más detalles",
|
||||
array(
|
||||
["field" => "tag", "key" => "iChamba_ID", "relation" => "=", "value" => $supplier->user_id]
|
||||
),
|
||||
$url = null,
|
||||
$data = null,
|
||||
$buttons = null,
|
||||
$schedule = $delay_UTC,
|
||||
$headings = "Proveedor, no olvides tu cita de hoy"
|
||||
);
|
||||
|
||||
//Schedule a notification for the user about its appointment
|
||||
OneSignal::sendNotificationUsingTags(
|
||||
"Tienes un servicio agendado hoy en " . $contract->address . " en 30 minutos. Dírigeta a la sección de contratos confirmados para más detalles",
|
||||
array(
|
||||
["field" => "tag", "key" => "iChamba_ID", "relation" => "=", "value" => $user->id]
|
||||
),
|
||||
$url = null,
|
||||
$data = null,
|
||||
$buttons = null,
|
||||
$schedule = $delay_UTC,
|
||||
$headings = $user->name . ", no olvides tu cita de hoy"
|
||||
);
|
||||
|
||||
$coupon->limit = $coupon->limit - 1;
|
||||
$coupon->save();
|
||||
|
||||
return response()->json([
|
||||
'name' => 'success'
|
||||
]);
|
||||
//
|
||||
} else {
|
||||
return response()->json([
|
||||
'name' => 'expired'
|
||||
]);
|
||||
}
|
||||
} else {
|
||||
return response()->json($coupon);
|
||||
}
|
||||
} else {
|
||||
return response()->json([
|
||||
'name' => 'used'
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function couponextra(Request $request) {
|
||||
|
||||
$rules = [
|
||||
'contract_id' => 'required|numeric',
|
||||
'amount' => 'required|numeric',
|
||||
'coupon' => 'required|string|regex:/(^[A-Za-z0-9 ]+$)+/',
|
||||
];
|
||||
|
||||
$validator = Validator::make($request->all(), $rules);
|
||||
if ($validator->fails()) {
|
||||
return redirect()->back()->withInput($request->all())->withErrors($validator);
|
||||
} else {
|
||||
|
||||
$user = Auth::user();
|
||||
$fcontract = FinishedContracts::where('id', $request->contract_id)->first();
|
||||
|
||||
$supplier = Suppliers::where('id', $fcontract->supplier_id)->first();
|
||||
$IVA = iChambaParameter::where('id', $supplier->IVA_id)->first();
|
||||
$ISR = iChambaParameter::where('id', $supplier->ISR_id)->first();
|
||||
$ichambafee = iChambaParameter::where('parameter', 'ichamba_fee')->first();
|
||||
|
||||
$coupon = Coupon::where('name', $request->coupon)->first();
|
||||
|
||||
if($coupon) {
|
||||
|
||||
if ($user->id == $fcontract->user_id) {
|
||||
|
||||
$checkccontracts = CurrentContracts::where('coupon_id', $coupon->id)->where('user_id', $user->id)->first();
|
||||
$checkfcontracts = FinishedContracts::where('coupon_id', $coupon->id)->where('user_id', $user->id)->first();
|
||||
|
||||
if (!isset($checkccontracts) && !isset($checkccontracts)) {
|
||||
if($coupon->percentage == 100) {
|
||||
if($coupon->limit > 0) {
|
||||
|
||||
$extra = new FinishedContracts();
|
||||
$extra->user_id = $fcontract->user_id;
|
||||
$extra->supplier_id = $fcontract->supplier_id;
|
||||
$extra->category_id = $fcontract->category_id;
|
||||
$extra->address = $fcontract->address;
|
||||
$extra->location = $fcontract->location;
|
||||
$extra->int_number = $fcontract->int_number;
|
||||
$extra->references = $fcontract->references;
|
||||
$extra->appointment = Carbon::now();
|
||||
$extra->amount = ($request->amount < 150 ? 150 : $request->amount);
|
||||
if (isset($IVA->num_value) && isset($IVA->num_value)) {
|
||||
$extra->IVA = $IVA->num_value;
|
||||
$extra->ISR = $ISR->num_value;
|
||||
$extra->revenue = ((($request->amount < 150 ? 150 : $request->amount) * ((100 - $ichambafee->num_value) / 100)) * ((100 - $IVA->num_value - $ISR->num_value) / 100));
|
||||
} else {
|
||||
$extra->IVA = 0;
|
||||
$extra->ISR = 0;
|
||||
$extra->revenue = (($request->amount < 150 ? 150 : $request->amount) * ((100 - $ichambafee->num_value) / 100));
|
||||
}
|
||||
$extra->ichamba_fee = $ichambafee->num_value;
|
||||
$extra->en = $fcontract->en;
|
||||
$extra->coupon_id = $coupon->id;
|
||||
$extra->transaction_id = $coupon->name;
|
||||
$extra->status_id = 3;
|
||||
$extra->parent_contract_id = $fcontract->id;
|
||||
$extra->save();
|
||||
|
||||
$coupon->limit = $coupon->limit - 1;
|
||||
$coupon->save();
|
||||
|
||||
return response()->json([
|
||||
'name' => 'success'
|
||||
]);
|
||||
} else {
|
||||
return response()->json([
|
||||
'name' => 'expired'
|
||||
]);
|
||||
}
|
||||
} else {
|
||||
return response()->json($coupon);
|
||||
}
|
||||
} else {
|
||||
return response()->json([
|
||||
'name' => 'used'
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function getcurrentcontracts(Request $request) {
|
||||
$user = Auth::user();
|
||||
$ccontracts = CurrentContracts::where('user_id', $user->id)->orderBy('created_at', 'DESC')->get();
|
||||
$currentcontracts = array();
|
||||
|
||||
foreach($ccontracts as $ccontract) {
|
||||
$category = Categories::where('id', $ccontract->category_id)->first();
|
||||
$supplier = Suppliers::where('id', $ccontract->supplier_id)->first();
|
||||
$time_limit = Carbon::parse($ccontract->appointment);
|
||||
$day_limit = Carbon::parse($ccontract->created_at);
|
||||
$currentcontractinfo = array(
|
||||
'id' => $ccontract->id,
|
||||
'phone' => $supplier->user->phone,
|
||||
'category' => $category->name,
|
||||
'en_category' => $category->en_name,
|
||||
'address' => $ccontract->address,
|
||||
'date' => $ccontract->appointment,
|
||||
'supplier' => $supplier->company_name,
|
||||
'status' => $ccontract->status_id,
|
||||
'amount' => $ccontract->amount,
|
||||
'code' => $ccontract->code,
|
||||
'rescheadulable' => $day_limit->diffInDays($time_limit),
|
||||
'time_limit' => $time_limit->diffInMinutes(Carbon::now()),
|
||||
'past_due' => $time_limit->diffInHours(Carbon::now(), false)
|
||||
);
|
||||
$currentcontracts[] = $currentcontractinfo;
|
||||
}
|
||||
|
||||
return response()->json($currentcontracts);
|
||||
}
|
||||
|
||||
public function cancelcontract(Request $request) {
|
||||
|
||||
$rules = [
|
||||
'contract_id' => 'required|numeric',
|
||||
];
|
||||
|
||||
$validator = Validator::make($request->all(), $rules);
|
||||
if ($validator->fails()) {
|
||||
return redirect()->back()->withInput($request->all())->withErrors($validator);
|
||||
} else {
|
||||
|
||||
$user = Auth::user();
|
||||
$ccontract = CurrentContracts::where('id', $request->contract_id)->first();
|
||||
$supplier = Suppliers::where('id', $ccontract->supplier_id)->first();
|
||||
|
||||
if ($user->id == $ccontract->user_id) {
|
||||
|
||||
$time_limit = Carbon::parse($ccontract->appointment);
|
||||
if ($time_limit->diffInHours(Carbon::now()) >= 24) {
|
||||
if($ccontract->transaction_id != 'NO APPLY') {
|
||||
try {
|
||||
$openpay = Openpay::getInstance(config('app.openpay_id'), config('app.openpay_apikey'));
|
||||
|
||||
$refundData = array(
|
||||
'description' => 'Reembolso del contrato con id: ' . $ccontract->id . ', del usuario ' . $user->name . '. Con proveedor: ' . $supplier->id,
|
||||
);
|
||||
|
||||
$customer = $openpay->customers->get($user->openpay_id);
|
||||
$charge = $customer->charges->get($ccontract->transaction_id);
|
||||
$charge->refund($refundData);
|
||||
} catch (OpenpayApiTransactionError $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'No se pudo procesar la transacción'
|
||||
]);
|
||||
} catch (OpenpayApiRequestError $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'No se pudo procesar la operación'
|
||||
]);
|
||||
} catch (OpenpayApiConnectionError $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'Error al conectarse a Openpay:' . $e->getMessage()
|
||||
]);
|
||||
|
||||
} catch (OpenpayApiAuthError $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'Error al conectarse a Openpay' . $e->getMessage()
|
||||
]);
|
||||
|
||||
} catch (OpenpayApiError $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'Error al conectarse a Openpay' . $e->getMessage()
|
||||
]);
|
||||
} catch (Exception $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'Error: ' . $e->getMessage()
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$fcontract = new FinishedContracts();
|
||||
$fcontract->user_id = $ccontract->user_id;
|
||||
$fcontract->supplier_id = $ccontract->supplier_id;
|
||||
$fcontract->category_id = $ccontract->category_id;
|
||||
$fcontract->address = $ccontract->address;
|
||||
$fcontract->location = $ccontract->location;
|
||||
$fcontract->int_number = $ccontract->int_number;
|
||||
$fcontract->references = $ccontract->references;
|
||||
$fcontract->appointment = $ccontract->appointment;
|
||||
$fcontract->amount = $ccontract->amount;
|
||||
$fcontract->IVA = $ccontract->IVA;
|
||||
$fcontract->ISR = $ccontract->ISR;
|
||||
$fcontract->ichamba_fee = $ccontract->ichamba_fee;
|
||||
$fcontract->revenue = $ccontract->revenue;
|
||||
$fcontract->details = $ccontract->details;
|
||||
$fcontract->en = $ccontract->en;
|
||||
$fcontract->transaction_id = (!empty($charge->id) ? $charge->id : $ccontract->transaction_id);
|
||||
$fcontract->status_id = 4;
|
||||
$fcontract->save();
|
||||
|
||||
CurrentContracts::destroy($request->contract_id);
|
||||
|
||||
OneSignal::sendNotificationUsingTags(
|
||||
"El servicio en " . $fcontract->address . " el día " . substr($fcontract->appointment, 0, 10) . "ha sido cancelado. Dírigeta a la sección de servicios contratados para más detalles",
|
||||
array(
|
||||
["field" => "tag", "key" => "iChamba_ID", "relation" => "=", "value" => $supplier->user_id]
|
||||
),
|
||||
$url = null,
|
||||
$data = null,
|
||||
$buttons = null,
|
||||
$schedule = null,
|
||||
$headings = "Proveedor: un servicio ha sido cancelado"
|
||||
);
|
||||
|
||||
return response()->json([
|
||||
'message' => 'Servicio cancelado exitosamente'
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function startcontract(Request $request) {
|
||||
|
||||
$rules = [
|
||||
'contract_pin' => 'required|numeric',
|
||||
];
|
||||
|
||||
$validator = Validator::make($request->all(), $rules);
|
||||
if ($validator->fails()) {
|
||||
return redirect()->back()->withInput($request->all())->withErrors($validator);
|
||||
} else {
|
||||
|
||||
$user = Auth::user();
|
||||
$supplier = $user->suppliers;
|
||||
$ccontract = CurrentContracts::where('code', $request->contract_pin)->where('supplier_id', $supplier->id)->first();
|
||||
|
||||
if($ccontract) {
|
||||
|
||||
$time_limit = Carbon::parse($ccontract->appointment);
|
||||
if ($time_limit->diffInMinutes(Carbon::now()) <= 120) {
|
||||
$fcontract = new FinishedContracts();
|
||||
$fcontract->user_id = $ccontract->user_id;
|
||||
$fcontract->supplier_id = $ccontract->supplier_id;
|
||||
$fcontract->category_id = $ccontract->category_id;
|
||||
$fcontract->address = $ccontract->address;
|
||||
$fcontract->location = $ccontract->location;
|
||||
$fcontract->int_number = $ccontract->int_number;
|
||||
$fcontract->references = $ccontract->references;
|
||||
$fcontract->appointment = $ccontract->appointment;
|
||||
$fcontract->amount = $ccontract->amount;
|
||||
$fcontract->IVA = $ccontract->IVA;
|
||||
$fcontract->ISR = $ccontract->ISR;
|
||||
$fcontract->ichamba_fee = $ccontract->ichamba_fee;
|
||||
$fcontract->revenue = $ccontract->revenue;
|
||||
$fcontract->details = $ccontract->details;
|
||||
$fcontract->en = $ccontract->en;
|
||||
$fcontract->coupon_id = $ccontract->coupon_id;
|
||||
$fcontract->transaction_id = $ccontract->transaction_id;
|
||||
$fcontract->status_id = 3;
|
||||
$fcontract->score = 5;
|
||||
$fcontract->save();
|
||||
|
||||
$supplier->total_score = ($supplier->total_score + 5);
|
||||
$supplier->finished_jobs = ($supplier->finished_jobs + 1);
|
||||
$supplier->save();
|
||||
|
||||
CurrentContracts::destroy($ccontract->id);
|
||||
|
||||
$payment = new Payments();
|
||||
$payment->contract_id = $fcontract->id;
|
||||
$payment->supplier_id = $fcontract->supplier_id;
|
||||
$payment->amount = $fcontract->amount;
|
||||
$payment->status_id = null;
|
||||
$payment->save();
|
||||
|
||||
OneSignal::sendNotificationUsingTags(
|
||||
"El servicio en " . $fcontract->address . " el día " . substr($fcontract->appointment, 0, 10) . " ha sido iniciado. Dírigeta a la sección de servicios contratados para más detalles",
|
||||
array(
|
||||
["field" => "tag", "key" => "iChamba_ID", "relation" => "=", "value" => $fcontract->user_id]
|
||||
),
|
||||
$url = null,
|
||||
$data = null,
|
||||
$buttons = null,
|
||||
$schedule = null,
|
||||
$headings = "Usuario: el proveedor ha iniciado el servicio"
|
||||
);
|
||||
|
||||
return response()->json([
|
||||
'message' => 'Servicio iniciado exitosamente'
|
||||
]);
|
||||
} else {
|
||||
return response()->json([
|
||||
'message' => 'No service'
|
||||
]);
|
||||
}
|
||||
} else {
|
||||
return response()->json([
|
||||
'message' => 'No service'
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function extra(Request $request) {
|
||||
|
||||
$rules = [
|
||||
'contract_id' => 'required|numeric',
|
||||
'amount' => 'required|numeric',
|
||||
'card_id' => 'required|numeric',
|
||||
'code' => 'required|numeric',
|
||||
'device_id' => 'required|string|regex:/(^[A-Za-z0-9 ]+$)+/',
|
||||
'coupon' => 'nullable|string|regex:/(^[A-Za-z0-9 ]+$)+/',
|
||||
];
|
||||
|
||||
$validator = Validator::make($request->all(), $rules);
|
||||
if ($validator->fails()) {
|
||||
return redirect()->back()->withInput($request->all())->withErrors($validator);
|
||||
} else {
|
||||
|
||||
$user = Auth::user();
|
||||
$coupon = Coupon::where('name', $request->coupon)->first();
|
||||
$fcontract = FinishedContracts::where('id', $request->contract_id)->first();
|
||||
Openpay::setProductionMode(true);
|
||||
|
||||
if ($user->id == $fcontract->user_id) {
|
||||
$card = Cards::where('id', $request->card_id)->first();
|
||||
$IVA = iChambaParameter::where('id', $supplier->IVA_id)->first();
|
||||
$ISR = iChambaParameter::where('id', $supplier->ISR_id)->first();
|
||||
$ichambafee = iChambaParameter::where('parameter', 'ichamba_add_fee')->first();
|
||||
$supplier = Suppliers::where('id', $fcontract->supplier_id)->first();
|
||||
|
||||
if ($card->user_id == $user->id) {
|
||||
$openpay = Openpay::getInstance(config('app.openpay_id'), config('app.openpay_apikey'));
|
||||
}
|
||||
|
||||
$extra = new FinishedContracts();
|
||||
$extra->user_id = $fcontract->user_id;
|
||||
$extra->supplier_id = $fcontract->supplier_id;
|
||||
$extra->category_id = $fcontract->category_id;
|
||||
$extra->address = $fcontract->address;
|
||||
$extra->location = $fcontract->location;
|
||||
$extra->int_number = $fcontract->int_number;
|
||||
$extra->references = $fcontract->references;
|
||||
$extra->appointment = Carbon::now();
|
||||
$extra->amount = ($request->amount < 150 ? 150 : $request->amount);
|
||||
if (isset($IVA->num_value) && isset($IVA->num_value)) {
|
||||
$extra->IVA = $IVA->num_value;
|
||||
$extra->ISR = $ISR->num_value;
|
||||
$extra->revenue = ((($request->amount < 150 ? 150 : $request->amount) * ((100 - $ichambafee->num_value) / 100)) * ((100 - $IVA->num_value - $ISR->num_value) / 100));
|
||||
} else {
|
||||
$extra->IVA = 0;
|
||||
$extra->ISR = 0;
|
||||
$extra->revenue = (($request->amount < 150 ? 150 : $request->amount) * ((100 - $ichambafee->num_value) / 100));
|
||||
}
|
||||
$extra->ichamba_fee = $ichambafee->num_value;
|
||||
$extra->en = $fcontract->en;
|
||||
|
||||
if ($coupon) {
|
||||
if ($coupon->limit > 0) {
|
||||
$extra->coupon_id = $coupon->id;
|
||||
$chargeData = array(
|
||||
'source_id' => $card->token,
|
||||
'method' => 'card',
|
||||
'amount' => ((($request->amount < 150 ? 150 : $request->amount)*(1 - (($coupon->percentage = null ? 0 : $coupon->percentage)/100)))-($coupon->amount = null ? 0 : $coupon->amount)),
|
||||
'description' => ('Contrato del usuario: ' . $user->name . ' del servicio ' . $category->name . ' realizado por el proveedor: ' . $supplier->company_name),
|
||||
'device_session_id' => $request->device_id,
|
||||
'cvv2' => $request->code
|
||||
);
|
||||
} else {
|
||||
$extra->coupon_id = null;
|
||||
$chargeData = array(
|
||||
'source_id' => $card->token,
|
||||
'method' => 'card',
|
||||
'amount' => ($request->amount < 150 ? 150 : $request->amount),
|
||||
'description' => ('Contrato del usuario: ' . $user->name . ' del servicio ' . $category->name . ' realizado por el proveedor: ' . $supplier->company_name),
|
||||
'device_session_id' => $request->device_id,
|
||||
'cvv2' => $request->code
|
||||
);
|
||||
}
|
||||
} else {
|
||||
$extra->coupon_id = null;
|
||||
$chargeData = array(
|
||||
'source_id' => $card->token,
|
||||
'method' => 'card',
|
||||
'amount' => ($request->amount < 150 ? 150 : $request->amount),
|
||||
'description' => ('Contrato del usuario: ' . $user->name . ' del servicio ' . $category->name . ' realizado por el proveedor: ' . $supplier->company_name),
|
||||
'device_session_id' => $request->device_id,
|
||||
'cvv2' => $request->code
|
||||
);
|
||||
}
|
||||
|
||||
$customer = $openpay->customers->get($user->openpay_id);
|
||||
$charge = $customer->charges->create($chargeData);
|
||||
|
||||
$extra->transaction_id = $charge->id;
|
||||
$extra->status_id = 3;
|
||||
$extra->parent_contract_id = $fcontract->id;
|
||||
$extra->save();
|
||||
|
||||
if ($coupon) {
|
||||
$coupon->limit = $coupon->limit - 1;
|
||||
$coupon->save();
|
||||
}
|
||||
|
||||
return response()->json([
|
||||
'message' => 'extra_added'
|
||||
]);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function getfinishedcontracts(Request $request) {
|
||||
$user = Auth::user();
|
||||
$fcontracts = FinishedContracts::where('user_id', $user->id)->orderBy('created_at', 'DESC')->get();
|
||||
$finishedcontracts = array();
|
||||
|
||||
foreach($fcontracts as $fcontract) {
|
||||
$category = Categories::where('id', $fcontract->category_id)->first();
|
||||
$supplier = Suppliers::where('id', $fcontract->supplier_id)->first();
|
||||
$time_limit = Carbon::parse($fcontract->appointment);
|
||||
$day_limit = Carbon::parse($fcontract->created_at);
|
||||
$finishedcontractinfo = array(
|
||||
'id' => $fcontract->id,
|
||||
'category' => $category->name,
|
||||
'en_category' => $category->en_name,
|
||||
'address' => $fcontract->address,
|
||||
'date' => $fcontract->appointment,
|
||||
'date_difference' => $time_limit->diff(Carbon::now(), false)->days,
|
||||
'supplier' => $supplier->company_name,
|
||||
'amount' => $fcontract->amount,
|
||||
'scored' => $fcontract->scored_at,
|
||||
'parent' => $fcontract->parent_contract_id,
|
||||
'status' => $fcontract->status->name
|
||||
);
|
||||
$finishedcontracts[] = $finishedcontractinfo;
|
||||
}
|
||||
|
||||
return response()->json($finishedcontracts);
|
||||
}
|
||||
|
||||
public function reviewcontract(Request $request) {
|
||||
|
||||
$rules = [
|
||||
'contract_id' => 'required|numeric',
|
||||
'rate' => 'required|numeric',
|
||||
'comment' => 'string',
|
||||
];
|
||||
|
||||
$validator = Validator::make($request->all(), $rules);
|
||||
if ($validator->fails()) {
|
||||
return redirect()->back()->withInput($request->all())->withErrors($validator);
|
||||
} else {
|
||||
$user = Auth::user();
|
||||
$fcontract = FinishedContracts::where('id', $request->contract_id)->first();
|
||||
|
||||
if ($fcontract->user_id == $user->id) {
|
||||
$fcontract->score = $fcontract->score - (5 - $request->rate);
|
||||
$fcontract->scored_at = Carbon::now();
|
||||
$fcontract->comments = strip_tags($request->comment);
|
||||
$fcontract->save();
|
||||
|
||||
$supplier = Suppliers::where('id', $fcontract->supplier_id)->first();
|
||||
$supplier->total_score = $supplier->total_score - (5 - $request->rate);
|
||||
$supplier->save();
|
||||
}
|
||||
}
|
||||
return response()->json([
|
||||
'message' => 'Calificación registrada con éxito, muchas gracias'
|
||||
]);
|
||||
}
|
||||
|
||||
public function deletemissed()
|
||||
{
|
||||
$contracts = CurrentContracts::whereDate('appointment', '<', Carbon::now())->delete();
|
||||
}
|
||||
|
||||
public function currentdestroy($id)
|
||||
{
|
||||
CurrentContracts::destroy($id);
|
||||
return redirect('currentcontracts');
|
||||
}
|
||||
|
||||
public function finisheddestroy($id)
|
||||
{
|
||||
FinishedContracts::destroy($id);
|
||||
return redirect('finishedcontracts');
|
||||
}
|
||||
}
|
||||
13
app/Http/Controllers/Controller.php
Normal file
13
app/Http/Controllers/Controller.php
Normal file
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Foundation\Bus\DispatchesJobs;
|
||||
use Illuminate\Routing\Controller as BaseController;
|
||||
use Illuminate\Foundation\Validation\ValidatesRequests;
|
||||
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
|
||||
|
||||
class Controller extends BaseController
|
||||
{
|
||||
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
|
||||
}
|
||||
170
app/Http/Controllers/CouponController.php
Normal file
170
app/Http/Controllers/CouponController.php
Normal file
@@ -0,0 +1,170 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\Coupon;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
|
||||
class CouponController extends Controller
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
//
|
||||
$request->session()->put('search', $request
|
||||
->has('search') ? strip_tags($request->get('search')) : ($request->session()
|
||||
->has('search') ? strip_tags($request->session()->get('search')) : ''));
|
||||
|
||||
$request->session()->put('field', $request
|
||||
->has('field') ? strip_tags($request->get('field')) : ($request->session()
|
||||
->has('field') ? strip_tags($request->session()->get('field')) : 'id'));
|
||||
|
||||
$request->session()->put('sort', $request
|
||||
->has('sort') ? strip_tags($request->get('sort')) : ($request->session()
|
||||
->has('sort') ? strip_tags($request->session()->get('sort')) : 'asc'));
|
||||
|
||||
//$headers = $request->get('header') != '' ? $request->get('header') : -1;
|
||||
|
||||
$coupons = new Coupon();
|
||||
$coupons = $coupons->where('id', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('name', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('percentage', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('amount', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('limit', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orderBy(strip_tags($request->session()->get('field')), strip_tags($request->session()->get('sort')))
|
||||
->paginate(10);
|
||||
|
||||
if ($request->ajax()) {
|
||||
return view('coupons.index', compact('coupons'));
|
||||
} else {
|
||||
return view('coupons.ajax', compact('coupons'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for creating a new resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function create(Request $request)
|
||||
{
|
||||
//
|
||||
if ($request->isMethod('get'))
|
||||
return view('coupons.form');
|
||||
|
||||
$rules = [
|
||||
'name' => 'required|string',
|
||||
'percentage' => 'nullable|numeric',
|
||||
'amount' => 'nullable|numeric',
|
||||
'limit' => 'nullable|numeric',
|
||||
];
|
||||
|
||||
$messages = [
|
||||
'name.required' => 'Se requiere un nombre de cupon',
|
||||
];
|
||||
|
||||
$validator = Validator::make($request->all(), $rules, $messages);
|
||||
if ($validator->fails()) {
|
||||
return redirect()->back()->withInput($request->all())->withErrors($validator);
|
||||
}
|
||||
|
||||
$coupon = new Coupon();
|
||||
$coupon->name = strip_tags($request->name);
|
||||
$coupon->percentage = $request->percentage;
|
||||
$coupon->amount = $request->amount;
|
||||
$coupon->limit = $request->limit;
|
||||
$coupon->save();
|
||||
|
||||
return redirect('coupons');
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the specified resource.
|
||||
*
|
||||
* @param \App\Models\Coupon $coupon
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function show(Coupon $coupon)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for editing the specified resource.
|
||||
*
|
||||
* @param \App\Models\Coupon $coupon
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function edit(Coupon $coupon)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \App\Models\Coupon $coupon
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function update(Request $request, $id)
|
||||
{
|
||||
//
|
||||
if ($request->isMethod('get'))
|
||||
return view('coupons.form', ['coupon' => Coupon::find($id)]);
|
||||
|
||||
$rules = [
|
||||
'name' => 'required|string',
|
||||
'percentage' => 'nullable|numeric',
|
||||
'amount' => 'nullable|numeric',
|
||||
'limit' => 'nullable|numeric',
|
||||
];
|
||||
|
||||
$messages = [
|
||||
'name.required' => 'Se requiere un nombre de cupon',
|
||||
];
|
||||
|
||||
$validator = Validator::make($request->all(), $rules, $messages);
|
||||
if ($validator->fails()) {
|
||||
return redirect()->back()->withInput($request->all())->withErrors($validator);
|
||||
}
|
||||
|
||||
$coupon = Coupon::find($id);
|
||||
$coupon->name = strip_tags($request->name);
|
||||
$coupon->percentage = $request->percentage;
|
||||
$coupon->amount = $request->amount;
|
||||
$coupon->limit = $request->limit;
|
||||
$coupon->save();
|
||||
|
||||
return redirect('coupons');
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*
|
||||
* @param \App\Models\Coupon $coupon
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function destroy($id)
|
||||
{
|
||||
//
|
||||
Coupon::destroy($id);
|
||||
return redirect('coupons');
|
||||
}
|
||||
}
|
||||
28
app/Http/Controllers/HomeController.php
Normal file
28
app/Http/Controllers/HomeController.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class HomeController extends Controller
|
||||
{
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('auth');
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the application dashboard.
|
||||
*
|
||||
* @return \Illuminate\Contracts\Support\Renderable
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
return view('home');
|
||||
}
|
||||
}
|
||||
179
app/Http/Controllers/IChambaParameterController.php
Normal file
179
app/Http/Controllers/IChambaParameterController.php
Normal file
@@ -0,0 +1,179 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\iChambaParameter;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
|
||||
class IChambaParameterController extends Controller
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
//
|
||||
$request->session()->put('search', $request
|
||||
->has('search') ? strip_tags($request->get('search')) : ($request->session()
|
||||
->has('search') ? strip_tags($request->session()->get('search')) : ''));
|
||||
|
||||
$request->session()->put('field', $request
|
||||
->has('field') ? strip_tags($request->get('field')) : ($request->session()
|
||||
->has('field') ? strip_tags($request->session()->get('field')) : 'id'));
|
||||
|
||||
$request->session()->put('sort', $request
|
||||
->has('sort') ? strip_tags($request->get('sort')) : ($request->session()
|
||||
->has('sort') ? strip_tags($request->session()->get('sort')) : 'asc'));
|
||||
|
||||
//$headers = $request->get('header') != '' ? $request->get('header') : -1;
|
||||
|
||||
$ichambaparameters = new iChambaParameter();
|
||||
$ichambaparameters = $ichambaparameters->where('id', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('parameter', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('num_value', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('string_value', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orderBy(strip_tags($request->session()->get('field')), strip_tags($request->session()->get('sort')))
|
||||
->paginate(10);
|
||||
|
||||
if ($request->ajax()) {
|
||||
return view('parameters.index', compact('ichambaparameters'));
|
||||
} else {
|
||||
return view('parameters.ajax', compact('ichambaparameters'));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for creating a new resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function create(Request $request)
|
||||
{
|
||||
//
|
||||
if ($request->isMethod('get'))
|
||||
return view('parameters.form');
|
||||
|
||||
$rules = [
|
||||
'parameter' => 'required|string',
|
||||
'num_value' => 'nullable|numeric',
|
||||
'string_value' => 'nullable|string',
|
||||
];
|
||||
|
||||
$messages = [
|
||||
'parameter.required' => 'Se requiere un nombre de parametro',
|
||||
];
|
||||
|
||||
$validator = Validator::make($request->all(), $rules, $messages);
|
||||
if ($validator->fails()) {
|
||||
return redirect()->back()->withInput($request->all())->withErrors($validator);
|
||||
}
|
||||
|
||||
$ichambaparameter = new iChambaParameter();
|
||||
$ichambaparameter->parameter = strip_tags($request->parameter);
|
||||
$ichambaparameter->num_value = $request->num_value;
|
||||
$ichambaparameter->string_value = strip_tags($request->string_value);
|
||||
$ichambaparameter->save();
|
||||
|
||||
return redirect('parameters');
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the specified resource.
|
||||
*
|
||||
* @param \App\iChambaParameter $iChambaParameter
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function show(iChambaParameter $iChambaParameter)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
public function parameters()
|
||||
{
|
||||
//
|
||||
$ichambaparameters = new iChambaParameter();
|
||||
$min_time = $ichambaparameters->where('parameter', 'min_time')->first()->num_value;
|
||||
$max_time = $ichambaparameters->where('parameter', 'max_time')->first()->num_value;
|
||||
|
||||
return response()->json([
|
||||
'min_time' => $min_time,
|
||||
'max_time' => $max_time
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for editing the specified resource.
|
||||
*
|
||||
* @param \App\iChambaParameter $iChambaParameter
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function edit(iChambaParameter $iChambaParameter)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \App\iChambaParameter $iChambaParameter
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function update(Request $request, $id)
|
||||
{
|
||||
//
|
||||
if ($request->isMethod('get'))
|
||||
return view('parameters.form', ['ichambaparameter' => iChambaParameter::find($id)]);
|
||||
|
||||
$rules = [
|
||||
'parameter' => 'required|string',
|
||||
'num_value' => 'nullable|numeric',
|
||||
'string_value' => 'nullable|string',
|
||||
];
|
||||
|
||||
$messages = [
|
||||
'parameter.required' => 'Se requiere un nombre de parametro',
|
||||
];
|
||||
|
||||
$validator = Validator::make($request->all(), $rules, $messages);
|
||||
if ($validator->fails()) {
|
||||
return redirect()->back()->withInput($request->all())->withErrors($validator);
|
||||
}
|
||||
|
||||
$ichambaparameter = iChambaParameter::find($id);
|
||||
$ichambaparameter->parameter = strip_tags($request->parameter);
|
||||
$ichambaparameter->num_value = $request->num_value;
|
||||
$ichambaparameter->string_value = strip_tags($request->string_value);
|
||||
$ichambaparameter->save();
|
||||
|
||||
return redirect('parameters');
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*
|
||||
* @param \App\iChambaParameter $iChambaParameter
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function destroy($id)
|
||||
{
|
||||
//
|
||||
iChambaParameter::destroy($id);
|
||||
return redirect('parameters');
|
||||
}
|
||||
}
|
||||
254
app/Http/Controllers/NoHomeController.php
Normal file
254
app/Http/Controllers/NoHomeController.php
Normal file
@@ -0,0 +1,254 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\NoHome;
|
||||
use App\User;
|
||||
use Carbon\Carbon;
|
||||
use OneSignal;
|
||||
use Image;
|
||||
use Storage;
|
||||
use App\Models\CurrentContracts;
|
||||
use App\Models\FinishedContracts;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Grimzy\LaravelMysqlSpatial\Types\Point;
|
||||
use Illuminate\Support\Facades\File;
|
||||
|
||||
class NoHomeController extends Controller
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for creating a new resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the specified resource.
|
||||
*
|
||||
* @param \App\NoHome $noHome
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function show(NoHome $noHome)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for editing the specified resource.
|
||||
*
|
||||
* @param \App\NoHome $noHome
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function edit(NoHome $noHome)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \App\NoHome $noHome
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function update(Request $request, NoHome $noHome)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*
|
||||
* @param \App\NoHome $noHome
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function destroy(NoHome $noHome)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
public function test(Request $request)
|
||||
{
|
||||
|
||||
$rules = [
|
||||
'contract_id' => 'required|numeric',
|
||||
'description' => 'required|string',
|
||||
'lat' => 'numeric|nullable',
|
||||
'lng' => 'numeric|nullable',
|
||||
//'house_photo' => 'image|mimes:jpeg,jpg,png|max:2048',
|
||||
];
|
||||
|
||||
$validator = Validator::make($request->all(), $rules);
|
||||
if ($validator->fails()) {
|
||||
return response()->json([
|
||||
'message' => 'Por favor corrija'
|
||||
]);
|
||||
} else {
|
||||
$user = Auth::user();
|
||||
$disk = Storage::disk('gcs');
|
||||
|
||||
if ($request->file('house_photo')) {
|
||||
$name = Carbon::now();
|
||||
$filename = $name . '.jpg';
|
||||
$disk->putFileAs('img/users/'. $user->id . '/', $request->file('house_photo'), $filename, 'public');
|
||||
}
|
||||
return response()->json([
|
||||
//'message' => 'Por favor espere a los 10 minutos de tolerancia de la hora acordada'
|
||||
'contract_id' => $request->contract_id,
|
||||
'lat' => $request->lat,
|
||||
'lng' => $request->lng,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
public function nohomecheck(Request $request){
|
||||
$user = Auth::user();
|
||||
$contract = CurrentContracts::where('supplier_id', $user->suppliers->id)->whereBetween('appointment', [Carbon::now()->subMinutes(15), Carbon::now()->addMinutes(10)])->first();
|
||||
|
||||
if ($contract) {
|
||||
$client = User::where('id', $contract->user_id)->first();
|
||||
if (Carbon::now()->diffInMinutes($contract->appointment, false) < 10) {
|
||||
return response()->json($contract);
|
||||
} else {
|
||||
OneSignal::sendNotificationUsingTags(
|
||||
"El proveedor para el servicio en " . $contract->address . " ha llegado. Dírigeta a la sección de contratos confirmados para más detalles",
|
||||
array(
|
||||
["field" => "tag", "key" => "iChamba_ID", "relation" => "=", "value" => $client->id]
|
||||
),
|
||||
$url = null,
|
||||
$data = null,
|
||||
$buttons = null,
|
||||
$schedule = null,
|
||||
$headings = $client->name + ", tu proveedor del servicio ha llegado"
|
||||
);
|
||||
return response()->json([
|
||||
//'message' => 'Por favor espere a los 10 minutos de tolerancia de la hora acordada'
|
||||
'message' => 'wait'
|
||||
]);
|
||||
}
|
||||
} else {
|
||||
return response()->json([
|
||||
//'message' => 'No hay contratos citados a esta hora'
|
||||
'message' => 'no-contract'
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function nohomeconfirm(Request $request) {
|
||||
|
||||
$rules = [
|
||||
'contract_id' => 'required|numeric',
|
||||
'description' => 'required|string',
|
||||
'lat' => 'numeric|nullable',
|
||||
'lng' => 'numeric|nullable',
|
||||
//'house_photo' => 'image|mimes:jpeg,jpg,png|max:2048',
|
||||
];
|
||||
|
||||
$validator = Validator::make($request->all(), $rules);
|
||||
if ($validator->fails()) {
|
||||
return redirect()->back()->withInput($request->all())->withErrors($validator);
|
||||
} else {
|
||||
|
||||
$user = Auth::user();
|
||||
$disk = Storage::disk('gcs');
|
||||
$ccontract = CurrentContracts::where('id', $request->contract_id)->first();
|
||||
$client = User::where('id', $ccontract->user_id)->first();
|
||||
|
||||
if ($user->suppliers->id == $ccontract->supplier_id) {
|
||||
if (Carbon::now()->diffInMinutes($ccontract->appointment, false) >= 11) {
|
||||
if ($request->lat != null && $request->lng != null) {
|
||||
$geometry = new Point($request->lat, $request->lng);
|
||||
}
|
||||
|
||||
$fcontract = new FinishedContracts();
|
||||
$fcontract->user_id = $ccontract->user_id;
|
||||
$fcontract->supplier_id = $ccontract->supplier_id;
|
||||
$fcontract->category_id = $ccontract->category_id;
|
||||
$fcontract->address = $ccontract->address;
|
||||
$fcontract->location = $ccontract->location;
|
||||
$fcontract->int_number = $ccontract->int_number;
|
||||
$fcontract->references = $ccontract->references;
|
||||
$fcontract->appointment = $ccontract->appointment;
|
||||
$fcontract->amount = $ccontract->amount;
|
||||
$fcontract->details = $ccontract->details;
|
||||
$fcontract->IVA = $ccontract->IVA;
|
||||
$fcontract->ISR = $ccontract->ISR;
|
||||
$fcontract->ichamba_fee = $ccontract->ichamba_fee;
|
||||
$fcontract->revenue = $ccontract->revenue;
|
||||
$fcontract->details = $ccontract->details;
|
||||
$fcontract->en = $ccontract->en;
|
||||
$fcontract->transaction_id = $ccontract->transaction_id;
|
||||
$fcontract->status_id = 5;
|
||||
$fcontract->save();
|
||||
|
||||
$nohome = new NoHome();
|
||||
$nohome->contract_id = $fcontract->id;
|
||||
if ($geometry != null) {
|
||||
$nohome->location = $geometry;
|
||||
}
|
||||
|
||||
if ($request->file('house_photo')) {
|
||||
$disk = Storage::disk('gcs');
|
||||
|
||||
$name = Carbon::now();
|
||||
$filename = $name . '.jpg';
|
||||
$disk->putFileAs('img/users/'. $user->id . '/', $request->file('house_photo'), $filename, 'public');
|
||||
$nohome->house_photo = $disk->url('img/users/'. $user->id . '/' . $filename);
|
||||
}
|
||||
$nohome->house_description = $request->description;
|
||||
|
||||
$nohome->save();
|
||||
|
||||
|
||||
return response()->json([
|
||||
'message' => 'Ausencia registrada con éxito, nos comunicaremos con usted por correo electrónico en caso de alguna circunstancia'
|
||||
]);
|
||||
} else {
|
||||
OneSignal::sendNotificationUsingTags(
|
||||
"El proveedor para el servicio en " . $ccontract->address . " ha llegado. Dírigeta a la sección de contratos confirmados para más detalles",
|
||||
array(
|
||||
["field" => "tag", "key" => "iChamba_ID", "relation" => "=", "value" => $client->id]
|
||||
),
|
||||
$url = null,
|
||||
$data = null,
|
||||
$buttons = null,
|
||||
$schedule = null,
|
||||
$headings = $client->name . ", tu proveedor del servicio ha llegado"
|
||||
);
|
||||
return response()->json([
|
||||
'order' => 'wait',
|
||||
'message' => 'Por favor espere a los 10 minutos de tolerancia de la hora acordada'
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
381
app/Http/Controllers/PaymentController.php
Normal file
381
app/Http/Controllers/PaymentController.php
Normal file
@@ -0,0 +1,381 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Carbon\Carbon;
|
||||
use App\User;
|
||||
use App\Models\Suppliers;
|
||||
use App\Models\Payments;
|
||||
use App\Models\FinishedContracts;
|
||||
use App\Models\Cards;
|
||||
use Openpay;
|
||||
use Exception;
|
||||
use OpenpayApiError;
|
||||
use OpenpayApiAuthError;
|
||||
use OpenpayApiRequestError;
|
||||
use OpenpayApiConnectionError;
|
||||
use OpenpayApiTransactionError;
|
||||
|
||||
require_once '../vendor/autoload.php';
|
||||
|
||||
class PaymentController extends Controller
|
||||
{
|
||||
//
|
||||
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
//
|
||||
$request->session()->put('search', $request
|
||||
->has('search') ? strip_tags($request->get('search')) : ($request->session()
|
||||
->has('search') ? strip_tags($request->session()->get('search')) : ''));
|
||||
|
||||
$request->session()->put('field', $request
|
||||
->has('field') ? strip_tags($request->get('field')) : ($request->session()
|
||||
->has('field') ? strip_tags($request->session()->get('field')) : 'id'));
|
||||
|
||||
$request->session()->put('sort', $request
|
||||
->has('sort') ? strip_tags($request->get('sort')) : ($request->session()
|
||||
->has('sort') ? strip_tags($request->session()->get('sort')) : 'asc'));
|
||||
|
||||
//$headers = $request->get('header') != '' ? $request->get('header') : -1;
|
||||
|
||||
$payments = new FinishedContracts();
|
||||
$payments = $payments->where('status_id', 3)->where('paid', false)->where('transaction_id', '!=', 'NO APPLY')
|
||||
->orderBy(strip_tags($request->session()->get('field')), strip_tags($request->session()->get('sort')))
|
||||
->paginate(10);
|
||||
|
||||
if ($request->ajax()) {
|
||||
return view('payments.index', compact('payments'));
|
||||
} else {
|
||||
return view('payments.ajax', compact('payments'));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function cardsindex(Request $request)
|
||||
{
|
||||
//
|
||||
$request->session()->put('search', $request
|
||||
->has('search') ? strip_tags($request->get('search')) : ($request->session()
|
||||
->has('search') ? strip_tags($request->session()->get('search')) : ''));
|
||||
|
||||
$request->session()->put('field', $request
|
||||
->has('field') ? strip_tags($request->get('field')) : ($request->session()
|
||||
->has('field') ? strip_tags($request->session()->get('field')) : 'id'));
|
||||
|
||||
$request->session()->put('sort', $request
|
||||
->has('sort') ? strip_tags($request->get('sort')) : ($request->session()
|
||||
->has('sort') ? strip_tags($request->session()->get('sort')) : 'asc'));
|
||||
|
||||
//$headers = $request->get('header') != '' ? $request->get('header') : -1;
|
||||
|
||||
$cards= new Cards();
|
||||
$cards = $cards->where('id', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('token', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orderBy(strip_tags($request->session()->get('field')), strip_tags($request->session()->get('sort')))
|
||||
->paginate(10);
|
||||
|
||||
if ($request->ajax()) {
|
||||
return view('cards.index', compact('cards'));
|
||||
} else {
|
||||
return view('cards.ajax', compact('cards'));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function destroy($id)
|
||||
{
|
||||
$credit_card = Cards::where('id', $id)->first();
|
||||
$user = User::where('id', $credit_card->user_id)->first();
|
||||
Openpay::setProductionMode(true);
|
||||
|
||||
try {
|
||||
$openpay = Openpay::getInstance(config('app.openpay_id'), config('app.openpay_apikey'));
|
||||
$customer = $openpay->customers->get($user->openpay_id);
|
||||
$card = $customer->cards->get($credit_card->token);
|
||||
$card->delete();
|
||||
} catch (OpenpayApiTransactionError $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'Error en la transacción'
|
||||
]);
|
||||
} catch (OpenpayApiRequestError $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'Error en los datos requeridos'
|
||||
]);
|
||||
} catch (OpenpayApiConnectionError $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'Error al conectarse a Openpay: ' . $e->getMessage()
|
||||
]);
|
||||
} catch (OpenpayApiAuthError $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'Error al conectarse a Openpay: ' . $e->getMessage()
|
||||
]);
|
||||
|
||||
} catch (OpenpayApiError $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'Error al conectarse a Openpay: ' . $e->getMessage()
|
||||
]);
|
||||
} catch (Exception $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'Error: ' . $e->getMessage()
|
||||
]);
|
||||
}
|
||||
|
||||
Cards::destroy($id);
|
||||
return redirect('cards');
|
||||
}
|
||||
|
||||
public function addcard(Request $request)
|
||||
{
|
||||
$rules = [
|
||||
'token' => 'required|string|regex:/(^[A-Za-z0-9 ]+$)+/',
|
||||
'device_id' => 'required|string|regex:/(^[A-Za-z0-9 ]+$)+/',
|
||||
];
|
||||
|
||||
$validator = Validator::make($request->all(), $rules);
|
||||
if ($validator->fails()) {
|
||||
return redirect()->back()->withInput($request->all())->withErrors($validator);
|
||||
}
|
||||
|
||||
$user = $request->user();
|
||||
Openpay::setProductionMode(true);
|
||||
|
||||
if ($user->openpay_id == null) {
|
||||
try {
|
||||
$openpay = Openpay::getInstance(config('app.openpay_id'), config('app.openpay_apikey'));
|
||||
$customerData = array(
|
||||
'external_id' => $user->id,
|
||||
'name' => $user->name,
|
||||
'email' => $user->email,
|
||||
);
|
||||
$customer = $openpay->customers->add($customerData);
|
||||
} catch (OpenpayApiTransactionError $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'No se pudo procesar la transacción'
|
||||
]);
|
||||
} catch (OpenpayApiRequestError $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'No se pudo procesar la operación'
|
||||
]);
|
||||
} catch (OpenpayApiConnectionError $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'Error al conectarse a Openpay: ' . $e->getMessage()
|
||||
]);
|
||||
|
||||
} catch (OpenpayApiAuthError $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'Error al conectarse a Openpay: ' . $e->getMessage()
|
||||
]);
|
||||
|
||||
} catch (OpenpayApiError $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'Error al conectarse a Openpay: ' . $e->getMessage()
|
||||
]);
|
||||
} catch (Exception $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'Error: ' . $e->getMessage()
|
||||
]);
|
||||
}
|
||||
|
||||
$user->openpay_id = $customer->id;
|
||||
$user->save();
|
||||
|
||||
}
|
||||
|
||||
|
||||
$cardDataRequest = array(
|
||||
'token_id' => $request->token,
|
||||
'device_session_id' => $request->device_id
|
||||
);
|
||||
|
||||
try {
|
||||
$openpay = Openpay::getInstance(config('app.openpay_id'), config('app.openpay_apikey'));
|
||||
$customer = $openpay->customers->get($user->openpay_id);
|
||||
$card = $customer->cards->add($cardDataRequest);
|
||||
|
||||
} catch (OpenpayApiTransactionError $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'No se pudo procesar la transacción'
|
||||
]);
|
||||
} catch (OpenpayApiRequestError $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'No se pudo procesar la operación'
|
||||
]);
|
||||
} catch (OpenpayApiConnectionError $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'Error al conectarse a Openpay: ' . $e->getMessage()
|
||||
]);
|
||||
|
||||
} catch (OpenpayApiAuthError $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'Error al conectarse a Openpay: ' . $e->getMessage()
|
||||
]);
|
||||
|
||||
} catch (OpenpayApiError $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'Error al conectarse a Openpay: ' . $e->getMessage()
|
||||
]);
|
||||
} catch (Exception $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'Error: ' . $e->getMessage()
|
||||
]);
|
||||
}
|
||||
|
||||
$card = new Cards();
|
||||
|
||||
$card->user_id = $user->id;
|
||||
$card->token = $request->token;
|
||||
|
||||
$card->save();
|
||||
|
||||
return response()->json([
|
||||
'message' => 'Tarjeta guardada exitosamente'
|
||||
]);
|
||||
}
|
||||
|
||||
public function deletecard(Request $request)
|
||||
{
|
||||
$rules = [
|
||||
'card_id' => 'required|numeric',
|
||||
];
|
||||
|
||||
$validator = Validator::make($request->all(), $rules);
|
||||
if ($validator->fails()) {
|
||||
return redirect()->back()->withInput($request->all())->withErrors($validator);
|
||||
}
|
||||
|
||||
$user = $request->user();
|
||||
$credit_card = Cards::where('id', $request->card_id)->first();
|
||||
Openpay::setProductionMode(true);
|
||||
|
||||
|
||||
if ($credit_card->user_id == $user->id) {
|
||||
try {
|
||||
$openpay = Openpay::getInstance(config('app.openpay_id'), config('app.openpay_apikey'));
|
||||
$customer = $openpay->customers->get($user->openpay_id);
|
||||
$card = $customer->cards->get($credit_card->token);
|
||||
$card->delete();
|
||||
} catch (OpenpayApiTransactionError $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'No se pudo procesar la transacción'
|
||||
]);
|
||||
} catch (OpenpayApiRequestError $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'No se pudo procesar la operación'
|
||||
]);
|
||||
} catch (OpenpayApiConnectionError $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'Error al conectarse a Openpay: ' . $e->getMessage()
|
||||
]);
|
||||
|
||||
} catch (OpenpayApiAuthError $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'Error al conectarse a Openpay: ' . $e->getMessage()
|
||||
]);
|
||||
|
||||
} catch (OpenpayApiError $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'Error al conectarse a Openpay: ' . $e->getMessage()
|
||||
]);
|
||||
} catch (Exception $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'Error: ' . $e->getMessage()
|
||||
]);
|
||||
}
|
||||
|
||||
Cards::destroy($request->card_id);
|
||||
|
||||
return response()->json([
|
||||
'message' => 'Tarjeta eliminada exitosamente'
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
public function getcards(Request $request)
|
||||
{
|
||||
$user = $request->user();
|
||||
Openpay::setProductionMode(true);
|
||||
|
||||
if ($user->openpay_id) {
|
||||
try {
|
||||
$openpay = Openpay::getInstance(config('app.openpay_id'), config('app.openpay_apikey'));
|
||||
$customer = $openpay->customers->get($user->openpay_id);
|
||||
} catch (OpenpayApiTransactionError $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'No se pudo procesar la transacción'
|
||||
]);
|
||||
} catch (OpenpayApiRequestError $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'No se pudo procesar la operación'
|
||||
]);
|
||||
} catch (OpenpayApiConnectionError $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'Error al conectarse a Openpay: ' . $e->getMessage()
|
||||
]);
|
||||
|
||||
} catch (OpenpayApiAuthError $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'Error al conectarse a Openpay: ' . $e->getMessage()
|
||||
]);
|
||||
|
||||
} catch (OpenpayApiError $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'Error al conectarse a Openpay: ' . $e->getMessage()
|
||||
]);
|
||||
} catch (Exception $e) {
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'Error: ' . $e->getMessage()
|
||||
]);
|
||||
}
|
||||
|
||||
$cards = Cards::where('user_id', $user->id)->get();
|
||||
|
||||
$cardsinfo = array();
|
||||
|
||||
foreach ($cards as $credit_card) {
|
||||
$card = $customer->cards->get($credit_card->token);
|
||||
$cardinfo = array(
|
||||
'id' => $credit_card->id,
|
||||
'brand' => $card->brand,
|
||||
'card_number' => $card->card_number,
|
||||
);
|
||||
$cardsinfo[] = $cardinfo;
|
||||
}
|
||||
return response()->json($cardsinfo);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
370
app/Http/Controllers/PostulationController.php
Normal file
370
app/Http/Controllers/PostulationController.php
Normal file
@@ -0,0 +1,370 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\User;
|
||||
use Carbon\Carbon;
|
||||
use OneSignal;
|
||||
use App\Models\Suppliers;
|
||||
use App\Models\Categories;
|
||||
use App\Models\Postulations;
|
||||
use App\Models\FinishedContracts;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Grimzy\LaravelMysqlSpatial\Types\Point;
|
||||
|
||||
class PostulationController extends Controller
|
||||
{
|
||||
//
|
||||
public function index(Request $request)
|
||||
{
|
||||
//
|
||||
$request->session()->put('search', $request
|
||||
->has('search') ? strip_tags($request->get('search')) : ($request->session()
|
||||
->has('search') ? strip_tags($request->session()->get('search')) : ''));
|
||||
|
||||
$request->session()->put('field', $request
|
||||
->has('field') ? strip_tags($request->get('field')) : ($request->session()
|
||||
->has('field') ? strip_tags($request->session()->get('field')) : 'id'));
|
||||
|
||||
$request->session()->put('sort', $request
|
||||
->has('sort') ? strip_tags($request->get('sort')) : ($request->session()
|
||||
->has('sort') ? strip_tags($request->session()->get('sort')) : 'asc'));
|
||||
|
||||
//$headers = $request->get('header') != '' ? $request->get('header') : -1;
|
||||
|
||||
$postulations = new Postulations();
|
||||
$postulations = $postulations->where('id', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('user_id', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('address', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('amount', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orderBy(strip_tags($request->session()->get('field')), strip_tags($request->session()->get('sort')))
|
||||
->paginate(10);
|
||||
|
||||
if ($request->ajax()) {
|
||||
return view('postulations.index', compact('postulations'));
|
||||
} else {
|
||||
return view('postulations.ajax', compact('postulations'));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function map(Request $request)
|
||||
{
|
||||
//
|
||||
$request->session()->put('search', $request
|
||||
->has('search') ? strip_tags($request->get('search')) : ($request->session()
|
||||
->has('search') ? strip_tags($request->session()->get('search')) : ''));
|
||||
|
||||
$request->session()->put('field', $request
|
||||
->has('field') ? strip_tags($request->get('field')) : ($request->session()
|
||||
->has('field') ? strip_tags($request->session()->get('field')) : 'id'));
|
||||
|
||||
$request->session()->put('sort', $request
|
||||
->has('sort') ? strip_tags($request->get('sort')) : ($request->session()
|
||||
->has('sort') ? strip_tags($request->session()->get('sort')) : 'asc'));
|
||||
|
||||
//$headers = $request->get('header') != '' ? $request->get('header') : -1;
|
||||
|
||||
$postulations = new Postulations();
|
||||
$postulations = $postulations->where('id', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('user_id', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('address', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('amount', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orderBy(strip_tags($request->session()->get('field')), strip_tags($request->session()->get('sort')))
|
||||
->paginate(10);
|
||||
|
||||
return view('postulations.map', compact('postulations'));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for creating a new resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function create(Request $request) {
|
||||
|
||||
$rules = [
|
||||
'category' => 'required|string',
|
||||
'address' => 'required|string',
|
||||
'int_number' => 'numeric|nullable',
|
||||
'references' => 'string|nullable',
|
||||
'setdate' => 'required|string',
|
||||
'sethour' => 'required|string',
|
||||
'details' => 'string|nullable',
|
||||
'lat' => 'required|numeric',
|
||||
'lng' => 'required|numeric',
|
||||
];
|
||||
|
||||
$validator = Validator::make($request->all(), $rules);
|
||||
if ($validator->fails()) {
|
||||
return response()->json($validator->messages());
|
||||
} else {
|
||||
|
||||
$user = Auth::user();
|
||||
$geometry = new Point($request->lat, $request->lng);
|
||||
$category = Categories::where('name', strip_tags($request->category))->orwhere('en_name', strip_tags($request->category))->first();
|
||||
|
||||
$distance = 0.5;
|
||||
$suppliers = Suppliers::distance('location', $geometry, $distance)->get();
|
||||
|
||||
if ($suppliers != '[]') {
|
||||
|
||||
$postulation = new Postulations();
|
||||
$postulation->user_id = $user->id;
|
||||
$postulation->category_id = $category->id;
|
||||
$postulation->address = strip_tags($request->address);
|
||||
$postulation->location = $geometry;
|
||||
$postulation->int_number = $request->int_number;
|
||||
$postulation->references = preg_replace('/\d+/', '', strip_tags($request->references));
|
||||
$timeoffset = str_replace("0", "", substr(substr(strip_tags($request->sethour), 23), 0, 3));
|
||||
$postulation->appointment = Carbon::createFromFormat('Y-m-d H:i:s', (substr(strip_tags($request->setdate), 0, 10) . ' ' . substr(substr(strip_tags($request->sethour), 11), 0, 8)), $timeoffset)->tz('UTC');
|
||||
$postulation->amount = 5000;
|
||||
$postulation->details = preg_replace('/\d+/', '', strip_tags($request->details));
|
||||
$postulation->save();
|
||||
|
||||
OneSignal::sendNotificationUsingTags(
|
||||
"Coméntele al Ing. que hay una postulación",
|
||||
array(
|
||||
["field" => "tag", "key" => "iChamba_ID", "relation" => "=", "value" => "128"]
|
||||
),
|
||||
$url = null,
|
||||
$data = null,
|
||||
$buttons = null,
|
||||
$schedule = null,
|
||||
$headings = "Admin: hay nueva postulación"
|
||||
);
|
||||
|
||||
foreach ($suppliers as $supplier) {
|
||||
if (in_array($category->id, $supplier->categories->pluck('id')->toArray())) {
|
||||
OneSignal::sendNotificationUsingTags(
|
||||
"Dirígete a la sección de postulaciones en la app para ver más detalles",
|
||||
array(
|
||||
["field" => "tag", "key" => "iChamba_ID", "relation" => "=", "value" => $supplier->user_id]
|
||||
),
|
||||
$url = null,
|
||||
$data = null,
|
||||
$buttons = null,
|
||||
$schedule = null,
|
||||
$headings = "Proveedor: hay nueva postulación"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$minutes = intval(substr(substr($request->setdate, 14), 0, 2) + 15);
|
||||
$hours = intval(substr(substr($request->setdate, 11), 0, 2) + 1);
|
||||
|
||||
if ($minutes > 59) {
|
||||
if ($hours > 23){
|
||||
$delay_msg = Carbon::now()->addDays(1)->toDateString() . ' ' . ($hours - 24) . ':' . ($minutes - 60) . substr(substr($request->setdate, 16), 0, 3);
|
||||
} else {
|
||||
$delay_msg = substr($request->sethour, 0, 10) . ' ' . $hours . ':' . ($minutes - 60) . substr(substr($request->setdate, 16), 0, 3);
|
||||
}
|
||||
} else {
|
||||
$delay_msg = substr($request->sethour, 0, 10) . ' ' . $hours . ':' . $minutes . substr(substr($request->setdate, 16), 0, 3);
|
||||
}
|
||||
|
||||
$delay_UTC = Carbon::now()->addMinutes(15)->toString();
|
||||
|
||||
OneSignal::sendNotificationUsingTags(
|
||||
"Dirígete a la sección de contratos en la app para ver más detalles",
|
||||
array(
|
||||
["field" => "tag", "key" => "iChamba_ID", "relation" => "=", "value" => $user->id]
|
||||
),
|
||||
$url = null,
|
||||
$data = null,
|
||||
$buttons = null,
|
||||
$schedule = $delay_UTC,
|
||||
$headings = "Búsqueda Finalizada"
|
||||
);
|
||||
|
||||
return response()->json([
|
||||
'message' => 'Servicio solicitado, espere a que un proveedor se postule'
|
||||
]);
|
||||
} else {
|
||||
return response()->json([
|
||||
'message' => 'No Provider'
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function postulate(Request $request) {
|
||||
|
||||
$rules = [
|
||||
'postulation_id' => 'required|numeric',
|
||||
];
|
||||
|
||||
$validator = Validator::make($request->all(), $rules);
|
||||
if ($validator->fails()) {
|
||||
return redirect()->back()->withInput($request->all())->withErrors($validator);
|
||||
} else {
|
||||
|
||||
$user = Auth::user();
|
||||
$postulation = Postulations::where('id', $request->postulation_id)->first();
|
||||
$time_created = Carbon::parse($postulation->created_at);
|
||||
$time_limit = (9900 - Carbon::now()->diffInMinutes($time_created));
|
||||
$supplier = Suppliers::where('user_id', $user->id)->first();
|
||||
|
||||
if ($time_limit > 0) {
|
||||
if (in_array($postulation->category_id, $supplier->categories->pluck('id')->toArray())) {
|
||||
if($supplier->membership == 1) {
|
||||
OneSignal::sendNotificationUsingTags(
|
||||
"Dirígete a la sección de contratos en la app para ver más detalles",
|
||||
array(
|
||||
["field" => "tag", "key" => "iChamba_ID", "relation" => "=", "value" => $postulation->user_id]
|
||||
),
|
||||
$url = null,
|
||||
$data = null,
|
||||
$buttons = null,
|
||||
$schedule = null,
|
||||
$headings = "Un proveedor certificado se ha postulado"
|
||||
);
|
||||
}
|
||||
|
||||
$supplier->postulations()->attach($request->postulation_id);
|
||||
$supplier->save();
|
||||
|
||||
return response()->json([
|
||||
'message' => 'Se ha postulado al servicio exitosamente'
|
||||
]);
|
||||
}
|
||||
|
||||
} else {
|
||||
return response()->json([
|
||||
'message' => 'La postulación ha caducado'
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function getpendingcontracts(Request $request) {
|
||||
$user = Auth::user();
|
||||
$postulations = Postulations::where('user_id', $user->id)->orderBy('created_at', 'DESC')->get();
|
||||
$pendingcontracts = array();
|
||||
|
||||
foreach($postulations as $postulation) {
|
||||
$time_limit = Carbon::parse($postulation->appointment);
|
||||
if ($time_limit->diffInMinutes(Carbon::now(), false) <= -60) {
|
||||
$category = Categories::where('id', $postulation->category_id)->first();
|
||||
$pendingcontractinfo = array(
|
||||
'id' => $postulation->id,
|
||||
'category' => $category->name,
|
||||
'en_category' => $category->en_name,
|
||||
'address' => $postulation->address,
|
||||
'date' => $postulation->appointment,
|
||||
'amount' => $postulation->amount
|
||||
);
|
||||
$pendingcontracts[] = $pendingcontractinfo;
|
||||
}
|
||||
}
|
||||
|
||||
return response()->json($pendingcontracts);
|
||||
}
|
||||
|
||||
public function getfinishedpostulations(Request $request) {
|
||||
$user = Auth::user();
|
||||
$postulations = FinishedContracts::where('supplier_id', $user->suppliers->id)->orderBy('created_at', 'DESC')->get();
|
||||
$finishedpostulations = array();
|
||||
|
||||
foreach($postulations as $postulation) {
|
||||
$time_limit = Carbon::parse($postulation->appointment);
|
||||
$category = Categories::where('id', $postulation->category_id)->first();
|
||||
$finishedpostulationinfo = array(
|
||||
'id' => $postulation->id,
|
||||
'category' => $category->name,
|
||||
'en_category' => $category->en_name,
|
||||
'address' => $postulation->address,
|
||||
'date' => $postulation->appointment,
|
||||
'amount' => $postulation->amount
|
||||
);
|
||||
$finishedpostulations[] = $finishedpostulationinfo;
|
||||
}
|
||||
|
||||
return response()->json($finishedpostulations);
|
||||
}
|
||||
|
||||
public function getpostulants(Request $request) {
|
||||
|
||||
$rules = [
|
||||
'postulation_id' => 'required|numeric',
|
||||
];
|
||||
|
||||
$validator = Validator::make($request->all(), $rules);
|
||||
if ($validator->fails()) {
|
||||
return redirect()->back()->withInput($request->all())->withErrors($validator);
|
||||
} else {
|
||||
|
||||
$user = Auth::user();
|
||||
$postulation = Postulations::where('id', $request->postulation_id)->first();
|
||||
|
||||
if ($postulation->user_id == $user->id) {
|
||||
$category = Categories::where('id', $postulation->category_id)->first();
|
||||
$suppliers = Suppliers::whereHas('postulations', function($q) use ($request) {
|
||||
$q->where('postulations_id', $request->postulation_id);
|
||||
})->get();
|
||||
|
||||
$pcontractsuppliers = array();
|
||||
|
||||
if ($suppliers != '[]') {
|
||||
foreach($suppliers as $supplier) {
|
||||
$pcontractsupplier = array(
|
||||
'id' => $postulation->id,
|
||||
'category' => $category->name,
|
||||
'en_category' => $category->en_name,
|
||||
'address' => $postulation->address,
|
||||
'date' => $postulation->appointment,
|
||||
'amount' => $postulation->amount,
|
||||
'supplier_id' => $supplier->id,
|
||||
'supplier' => $supplier->company_name,
|
||||
'tags' => $supplier->tags,
|
||||
'cover_photo' => $supplier->cover_photo,
|
||||
'membership' => $supplier->membership,
|
||||
'fee' => $supplier->minimun_fee,
|
||||
'score' => round($supplier->total_score/$supplier->finished_jobs, 1),
|
||||
);
|
||||
$pcontractsuppliers[] = $pcontractsupplier;
|
||||
}
|
||||
|
||||
$pcontractsuppliercollection = collect($pcontractsuppliers)->sortByDesc('membership')->sortByDesc('score');
|
||||
$pcontractsupplier = $pcontractsuppliercollection->values()->all();
|
||||
|
||||
} else {
|
||||
$pcontractsupplier = array(
|
||||
'id' => $postulation->id,
|
||||
'category' => $category->name,
|
||||
'en_category' => $category->en_name,
|
||||
'address' => $postulation->address,
|
||||
'date' => $postulation->appointment,
|
||||
'amount' => $postulation->amount,
|
||||
'supplier_id' => null,
|
||||
'supplier' => null,
|
||||
'tags' => null,
|
||||
'cover_photo' => null,
|
||||
'membership' => null,
|
||||
'fee' => null,
|
||||
'score' => null,
|
||||
);
|
||||
|
||||
$pcontractsuppliers[] = $pcontractsupplier;
|
||||
$pcontractsupplier = $pcontractsuppliers;
|
||||
}
|
||||
return response()->json($pcontractsupplier);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function deleteexpired()
|
||||
{
|
||||
$postulations = Postulations::whereDate('appointment', '<', Carbon::now())->delete();
|
||||
}
|
||||
|
||||
public function destroy($id)
|
||||
{
|
||||
Postulations::destroy($id);
|
||||
return redirect('postulations');
|
||||
}
|
||||
|
||||
}
|
||||
112
app/Http/Controllers/ReportCommentController.php
Normal file
112
app/Http/Controllers/ReportCommentController.php
Normal file
@@ -0,0 +1,112 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\ReportComment;
|
||||
use App\Models\FinishedContracts;
|
||||
use App\NoHome;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class ReportCommentController extends Controller
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function index(Request $request, $id, $contract_id)
|
||||
{
|
||||
//
|
||||
$request->session()->put('search', $request
|
||||
->has('search') ? strip_tags($request->get('search')) : ($request->session()
|
||||
->has('search') ? strip_tags($request->session()->get('search')) : ''));
|
||||
|
||||
$request->session()->put('field', $request
|
||||
->has('field') ? strip_tags($request->get('field')) : ($request->session()
|
||||
->has('field') ? strip_tags($request->session()->get('field')) : 'id'));
|
||||
|
||||
$request->session()->put('sort', $request
|
||||
->has('sort') ? strip_tags($request->get('sort')) : ($request->session()
|
||||
->has('sort') ? strip_tags($request->session()->get('sort')) : 'asc'));
|
||||
|
||||
//$headers = $request->get('header') != '' ? $request->get('header') : -1;
|
||||
|
||||
$contract = FinishedContracts::where('id', $contract_id)->first();
|
||||
$nohome = NoHome::where('contract_id', $contract_id)->first();
|
||||
$comments = new ReportComment();
|
||||
$comments = $comments->where('report_id', $id)
|
||||
->orderBy(strip_tags($request->session()->get('field')), strip_tags($request->session()->get('sort')))
|
||||
->paginate(10);
|
||||
|
||||
if ($request->isMethod('get'))
|
||||
return view('reports.comments', compact('comments', 'contract', 'nohome'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for creating a new resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the specified resource.
|
||||
*
|
||||
* @param \App\ReportComment $reportComment
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function show(ReportComment $reportComment)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for editing the specified resource.
|
||||
*
|
||||
* @param \App\ReportComment $reportComment
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function edit(ReportComment $reportComment)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \App\ReportComment $reportComment
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function update(Request $request, ReportComment $reportComment)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*
|
||||
* @param \App\ReportComment $reportComment
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function destroy($id, $contract_id)
|
||||
{
|
||||
//
|
||||
ReportComment::destroy($id);
|
||||
return redirect('reports/comments/'.$id.'/'.$contract_id);
|
||||
}
|
||||
}
|
||||
183
app/Http/Controllers/ReportController.php
Normal file
183
app/Http/Controllers/ReportController.php
Normal file
@@ -0,0 +1,183 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\User;
|
||||
use App\Report;
|
||||
use App\ReportComment;
|
||||
use App\Models\FinishedContracts;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
|
||||
class ReportController extends Controller
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
//
|
||||
$request->session()->put('search', $request
|
||||
->has('search') ? strip_tags($request->get('search')) : ($request->session()
|
||||
->has('search') ? strip_tags($request->session()->get('search')) : ''));
|
||||
|
||||
$request->session()->put('field', $request
|
||||
->has('field') ? strip_tags($request->get('field')) : ($request->session()
|
||||
->has('field') ? strip_tags($request->session()->get('field')) : 'id'));
|
||||
|
||||
$request->session()->put('sort', $request
|
||||
->has('sort') ? strip_tags($request->get('sort')) : ($request->session()
|
||||
->has('sort') ? strip_tags($request->session()->get('sort')) : 'asc'));
|
||||
|
||||
//$headers = $request->get('header') != '' ? $request->get('header') : -1;
|
||||
|
||||
$reports = new Report();
|
||||
$reports = $reports->where('id', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('contract_id', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('moderator_id', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('veredict', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orderBy(strip_tags($request->session()->get('field')), strip_tags($request->session()->get('sort')))
|
||||
->paginate(10);
|
||||
|
||||
if ($request->ajax()) {
|
||||
return view('reports.index', compact('reports'));
|
||||
} else {
|
||||
return view('reports.ajax', compact('reports'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for creating a new resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the specified resource.
|
||||
*
|
||||
* @param \App\Report $report
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function show(Report $report)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for editing the specified resource.
|
||||
*
|
||||
* @param \App\Report $report
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function veredict(Request $request, $id)
|
||||
{
|
||||
//
|
||||
if ($request->isMethod('get'))
|
||||
return view('reports.veredict', ['report' => Report::find($id)]);
|
||||
|
||||
$rules = [
|
||||
'veredict' => 'required|string',
|
||||
];
|
||||
|
||||
$messages = [
|
||||
'veredict.required' => 'Se requiere un veredicto',
|
||||
];
|
||||
|
||||
$validator = Validator::make($request->all(), $rules, $messages);
|
||||
if ($validator->fails()) {
|
||||
return redirect()->back()->withInput($request->all())->withErrors($validator);
|
||||
}
|
||||
|
||||
$report = Report::find($id);
|
||||
$report->veredict = strip_tags($request->veredict);
|
||||
$coupon->save();
|
||||
|
||||
return redirect('reports');
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \App\Report $report
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function update(Request $request, Report $report)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*
|
||||
* @param \App\Report $report
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function destroy($id)
|
||||
{
|
||||
//
|
||||
Report::destroy($id);
|
||||
return redirect('reports');
|
||||
}
|
||||
|
||||
public function report(Request $request) {
|
||||
|
||||
$rules = [
|
||||
'contract_id' => 'required|numeric',
|
||||
'comment' => 'required|string',
|
||||
];
|
||||
|
||||
$validator = Validator::make($request->all(), $rules);
|
||||
if ($validator->fails()) {
|
||||
return redirect()->back()->withInput($request->all())->withErrors($validator);
|
||||
} else {
|
||||
|
||||
$user = Auth::user();
|
||||
$contract = FinishedContracts::where('id', $request->contract_id)->first();
|
||||
|
||||
if ($user->id == $contract->user_id) {
|
||||
$report = new Report();
|
||||
$report->contract_id = $contract->id;
|
||||
|
||||
$moderator = User::where('role_id', 5)->get();
|
||||
if ($moderator != '[]') {
|
||||
$report->moderator_id = $moderator->random()->id;
|
||||
} else {
|
||||
$report->moderator_id = User::where('role_id', 7)->first()->id;
|
||||
}
|
||||
$report->save();
|
||||
|
||||
$reportcomment = new ReportComment();
|
||||
$reportcomment->report_id = $report->id;
|
||||
$reportcomment->user_id = $user->id;
|
||||
$reportcomment->comment = strip_tags($request->comment);
|
||||
$reportcomment->save();
|
||||
|
||||
$contract->status_id = 6;
|
||||
$contract->save();
|
||||
|
||||
return response()->json([
|
||||
'message' => 'Reporte registrado con éxito, nos comunicaremos con usted por correo electrónico a la brevedad para continuar con el caso'
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
151
app/Http/Controllers/StatusController.php
Normal file
151
app/Http/Controllers/StatusController.php
Normal file
@@ -0,0 +1,151 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\Status;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
|
||||
class StatusController extends Controller
|
||||
{
|
||||
//
|
||||
public function index(Request $request)
|
||||
{
|
||||
//
|
||||
$request->session()->put('search', $request
|
||||
->has('search') ? strip_tags($request->get('search')) : ($request->session()
|
||||
->has('search') ? strip_tags($request->session()->get('search')) : ''));
|
||||
|
||||
$request->session()->put('field', $request
|
||||
->has('field') ? strip_tags($request->get('field')) : ($request->session()
|
||||
->has('field') ? strip_tags($request->session()->get('field')) : 'id'));
|
||||
|
||||
$request->session()->put('sort', $request
|
||||
->has('sort') ? strip_tags($request->get('sort')) : ($request->session()
|
||||
->has('sort') ? strip_tags($request->session()->get('sort')) : 'asc'));
|
||||
|
||||
//$headers = $request->get('header') != '' ? $request->get('header') : -1;
|
||||
|
||||
$status = new Status();
|
||||
$status = $status->where('id', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('name', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orderBy(strip_tags($request->session()->get('field')), strip_tags($request->session()->get('sort')))
|
||||
->paginate(10);
|
||||
|
||||
if ($request->ajax()) {
|
||||
return view('status.index', compact('status'));
|
||||
} else {
|
||||
return view('status.ajax', compact('status'));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for creating a new resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function create(Request $request)
|
||||
{
|
||||
//
|
||||
if ($request->isMethod('get'))
|
||||
return view('status.form');
|
||||
|
||||
$rules = [
|
||||
'name' => 'required|string',
|
||||
];
|
||||
|
||||
$messages = [
|
||||
'name.required' => 'Se requiere el nombre del status',
|
||||
];
|
||||
|
||||
$validator = Validator::make($request->all(), $rules, $messages);
|
||||
if ($validator->fails()) {
|
||||
return redirect()->back()->withInput($request->all())->withErrors($validator);
|
||||
}
|
||||
|
||||
$status = new Status();
|
||||
$status->name = strip_tags($request->name);
|
||||
$status->save();
|
||||
|
||||
return redirect('status');
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the specified resource.
|
||||
*
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function show($id)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for editing the specified resource.
|
||||
*
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function edit($id)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function update(Request $request, $id)
|
||||
{
|
||||
//
|
||||
if ($request->isMethod('get'))
|
||||
return view('status.form',['status' => Status::find($id)]);
|
||||
|
||||
$rules = [
|
||||
'name' => 'required|string',
|
||||
];
|
||||
|
||||
$messages = [
|
||||
'name.required' => 'Se requiere el nombre del status',
|
||||
];
|
||||
|
||||
$validator = Validator::make($request->all(), $rules, $messages);
|
||||
if ($validator->fails()) {
|
||||
return redirect()->back()->withInput($request->all())->withErrors($validator);
|
||||
}
|
||||
|
||||
$status = Status::find($id);
|
||||
$status->name = strip_tags($request->name);
|
||||
$status->save();
|
||||
|
||||
return redirect('status');
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function destroy($id)
|
||||
{
|
||||
Status::destroy($id);
|
||||
return redirect('status');
|
||||
}
|
||||
}
|
||||
1273
app/Http/Controllers/SupplierController.php
Normal file
1273
app/Http/Controllers/SupplierController.php
Normal file
File diff suppressed because it is too large
Load Diff
147
app/Http/Controllers/UserController.php
Normal file
147
app/Http/Controllers/UserController.php
Normal file
@@ -0,0 +1,147 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\User;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
|
||||
class UserController extends Controller
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
//
|
||||
$request->session()->put('search', $request
|
||||
->has('search') ? strip_tags($request->get('search')) : ($request->session()
|
||||
->has('search') ? strip_tags($request->session()->get('search')) : ''));
|
||||
|
||||
$request->session()->put('field', $request
|
||||
->has('field') ? strip_tags($request->get('field')) : ($request->session()
|
||||
->has('field') ? strip_tags($request->session()->get('field')) : 'id'));
|
||||
|
||||
$request->session()->put('sort', $request
|
||||
->has('sort') ? strip_tags($request->get('sort')) : ($request->session()
|
||||
->has('sort') ? strip_tags($request->session()->get('sort')) : 'asc'));
|
||||
|
||||
//$headers = $request->get('header') != '' ? $request->get('header') : -1;
|
||||
|
||||
$users = new User();
|
||||
$users = $users->where('id', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('name', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('email', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('role_id', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orwhere('phone', 'LIKE', '%' . strip_tags($request->session()->get('search')) . '%')
|
||||
->orderBy(strip_tags($request->session()->get('field')), strip_tags($request->session()->get('sort')))
|
||||
->paginate(10);
|
||||
|
||||
if ($request->ajax()) {
|
||||
return view('users.index', compact('users'));
|
||||
} else {
|
||||
return view('users.ajax', compact('users'));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for creating a new resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the specified resource.
|
||||
*
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function show($id)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for editing the specified resource.
|
||||
*
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function edit($id)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function update(Request $request, $id)
|
||||
{
|
||||
//
|
||||
if ($request->isMethod('get'))
|
||||
return view('users.form',['user' => User::find($id)]);
|
||||
|
||||
$rules = [
|
||||
'name' => 'required|string',
|
||||
'email' => 'required|string|email',
|
||||
'role' => 'required|numeric',
|
||||
'openpay_id' => 'string|nullable',
|
||||
];
|
||||
|
||||
$messages = [
|
||||
'name.required' => 'Se requiere un nombre de usuario',
|
||||
'email.required' => 'Se requiere un correo electrónico válido',
|
||||
'role.required' => 'Se requiere un rol',
|
||||
];
|
||||
|
||||
$validator = Validator::make($request->all(), $rules, $messages);
|
||||
if ($validator->fails()) {
|
||||
return redirect()->back()->withInput($request->all())->withErrors($validator);
|
||||
}
|
||||
|
||||
$user = User::find($id);
|
||||
$user->name = strip_tags($request->name);
|
||||
$user->email = $request->email;
|
||||
$user->role_id = $request->role;
|
||||
if ($request->openpay_id == "null" OR $request->openpay_id == null){
|
||||
$user->openpay_id = null;
|
||||
}
|
||||
$user->save();
|
||||
|
||||
return redirect('users');
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function destroy($id)
|
||||
{
|
||||
User::destroy($id);
|
||||
return redirect('users');
|
||||
}
|
||||
}
|
||||
84
app/Http/Kernel.php
Normal file
84
app/Http/Kernel.php
Normal file
@@ -0,0 +1,84 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http;
|
||||
|
||||
use Illuminate\Foundation\Http\Kernel as HttpKernel;
|
||||
|
||||
class Kernel extends HttpKernel
|
||||
{
|
||||
/**
|
||||
* The application's global HTTP middleware stack.
|
||||
*
|
||||
* These middleware are run during every request to your application.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $middleware = [
|
||||
\App\Http\Middleware\CheckForMaintenanceMode::class,
|
||||
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
|
||||
\App\Http\Middleware\TrimStrings::class,
|
||||
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
|
||||
\App\Http\Middleware\TrustProxies::class,
|
||||
\App\Http\Middleware\Cors::class,
|
||||
];
|
||||
|
||||
/**
|
||||
* The application's route middleware groups.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $middlewareGroups = [
|
||||
'web' => [
|
||||
\App\Http\Middleware\EncryptCookies::class,
|
||||
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
|
||||
\Illuminate\Session\Middleware\StartSession::class,
|
||||
// \Illuminate\Session\Middleware\AuthenticateSession::class,
|
||||
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
|
||||
\App\Http\Middleware\VerifyCsrfToken::class,
|
||||
\Illuminate\Routing\Middleware\SubstituteBindings::class,
|
||||
],
|
||||
|
||||
'api' => [
|
||||
'throttle:60,1',
|
||||
'bindings',
|
||||
],
|
||||
];
|
||||
|
||||
/**
|
||||
* The application's route middleware.
|
||||
*
|
||||
* These middleware may be assigned to groups or used individually.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $routeMiddleware = [
|
||||
'auth' => \App\Http\Middleware\Authenticate::class,
|
||||
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
|
||||
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
|
||||
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
|
||||
'can' => \Illuminate\Auth\Middleware\Authorize::class,
|
||||
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
|
||||
'rolecheck' => \App\Http\Middleware\RoleCheck::class,
|
||||
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
|
||||
'superadmin' => \App\Http\Middleware\SuperAdmin::class,
|
||||
'appenginecron' => \App\Http\Middleware\AppEngineCron::class,
|
||||
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
|
||||
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
|
||||
];
|
||||
|
||||
/**
|
||||
* The priority-sorted list of middleware.
|
||||
*
|
||||
* This forces non-global middleware to always be in the given order.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $middlewarePriority = [
|
||||
\Illuminate\Session\Middleware\StartSession::class,
|
||||
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
|
||||
\App\Http\Middleware\Authenticate::class,
|
||||
\Illuminate\Session\Middleware\AuthenticateSession::class,
|
||||
\Illuminate\Routing\Middleware\SubstituteBindings::class,
|
||||
\Illuminate\Auth\Middleware\Authorize::class,
|
||||
];
|
||||
}
|
||||
24
app/Http/Middleware/AppEngineCron.php
Normal file
24
app/Http/Middleware/AppEngineCron.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
|
||||
class AppEngineCron
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
if (!$request->hasHeader('X-Appengine-Cron')) {
|
||||
return response()->json(trans('auth.unauthorized'), 401);
|
||||
}
|
||||
|
||||
return $next($request);
|
||||
}
|
||||
}
|
||||
21
app/Http/Middleware/Authenticate.php
Normal file
21
app/Http/Middleware/Authenticate.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Illuminate\Auth\Middleware\Authenticate as Middleware;
|
||||
|
||||
class Authenticate extends Middleware
|
||||
{
|
||||
/**
|
||||
* Get the path the user should be redirected to when they are not authenticated.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return string
|
||||
*/
|
||||
protected function redirectTo($request)
|
||||
{
|
||||
if (! $request->expectsJson()) {
|
||||
return route('login');
|
||||
}
|
||||
}
|
||||
}
|
||||
17
app/Http/Middleware/CheckForMaintenanceMode.php
Normal file
17
app/Http/Middleware/CheckForMaintenanceMode.php
Normal file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode as Middleware;
|
||||
|
||||
class CheckForMaintenanceMode extends Middleware
|
||||
{
|
||||
/**
|
||||
* The URIs that should be reachable while maintenance mode is enabled.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $except = [
|
||||
//
|
||||
];
|
||||
}
|
||||
27
app/Http/Middleware/Cors.php
Normal file
27
app/Http/Middleware/Cors.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
namespace App\Http\Middleware;
|
||||
use Closure;
|
||||
class Cors
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
|
||||
$allowedOrigins = ['http://localhost', 'ionic://localhost'];
|
||||
|
||||
if (in_array($request->server('HTTP_ORIGIN'), $allowedOrigins)) {
|
||||
return $next($request)
|
||||
->header('Access-Control-Allow-Origin', $request->server('HTTP_ORIGIN'))
|
||||
->header('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH, DELETE, OPTIONS')
|
||||
->header('Access-Control-Allow-Headers', 'Content-Type, Authorization, X-Requested-With, X-XSRF-TOKEN');
|
||||
}
|
||||
|
||||
return $next($request);
|
||||
}
|
||||
}
|
||||
17
app/Http/Middleware/EncryptCookies.php
Normal file
17
app/Http/Middleware/EncryptCookies.php
Normal file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Illuminate\Cookie\Middleware\EncryptCookies as Middleware;
|
||||
|
||||
class EncryptCookies extends Middleware
|
||||
{
|
||||
/**
|
||||
* The names of the cookies that should not be encrypted.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $except = [
|
||||
//
|
||||
];
|
||||
}
|
||||
26
app/Http/Middleware/RedirectIfAuthenticated.php
Normal file
26
app/Http/Middleware/RedirectIfAuthenticated.php
Normal file
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class RedirectIfAuthenticated
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
||||
* @param string|null $guard
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle($request, Closure $next, $guard = null)
|
||||
{
|
||||
if (Auth::guard($guard)->check()) {
|
||||
return redirect('/home');
|
||||
}
|
||||
|
||||
return $next($request);
|
||||
}
|
||||
}
|
||||
26
app/Http/Middleware/RoleCheck.php
Normal file
26
app/Http/Middleware/RoleCheck.php
Normal file
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
|
||||
class RoleCheck
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle($request, Closure $next, $role)
|
||||
{
|
||||
if($request->user()) {
|
||||
if($request->user()->role_id == $role OR $request->user()->role_id >= 6) {
|
||||
return $next($request);
|
||||
}
|
||||
} else {
|
||||
return redirect('home');
|
||||
}
|
||||
}
|
||||
}
|
||||
24
app/Http/Middleware/SuperAdmin.php
Normal file
24
app/Http/Middleware/SuperAdmin.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
|
||||
class SuperAdmin
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
if($request->user()->role_id == 7) {
|
||||
return $next($request);
|
||||
} else {
|
||||
return redirect('home');
|
||||
}
|
||||
}
|
||||
}
|
||||
18
app/Http/Middleware/TrimStrings.php
Normal file
18
app/Http/Middleware/TrimStrings.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware;
|
||||
|
||||
class TrimStrings extends Middleware
|
||||
{
|
||||
/**
|
||||
* The names of the attributes that should not be trimmed.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $except = [
|
||||
'password',
|
||||
'password_confirmation',
|
||||
];
|
||||
}
|
||||
23
app/Http/Middleware/TrustProxies.php
Normal file
23
app/Http/Middleware/TrustProxies.php
Normal file
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Fideloper\Proxy\TrustProxies as Middleware;
|
||||
|
||||
class TrustProxies extends Middleware
|
||||
{
|
||||
/**
|
||||
* The trusted proxies for this application.
|
||||
*
|
||||
* @var array|string
|
||||
*/
|
||||
protected $proxies;
|
||||
|
||||
/**
|
||||
* The headers that should be used to detect proxies.
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
protected $headers = Request::HEADER_X_FORWARDED_ALL;
|
||||
}
|
||||
24
app/Http/Middleware/VerifyCsrfToken.php
Normal file
24
app/Http/Middleware/VerifyCsrfToken.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
|
||||
|
||||
class VerifyCsrfToken extends Middleware
|
||||
{
|
||||
/**
|
||||
* Indicates whether the XSRF-TOKEN cookie should be set on the response.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
protected $addHttpCookie = true;
|
||||
|
||||
/**
|
||||
* The URIs that should be excluded from CSRF verification.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $except = [
|
||||
//
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user