Merge branch 'companyFrontend' into 'master'

Company frontend

See merge request CIEFWorldwideSdnBhd/izyim-api!10
This commit is contained in:
Jack Goh
2018-06-06 08:52:48 +00:00
10 changed files with 13913 additions and 57 deletions
+1 -1
View File
@@ -7,7 +7,7 @@ use Illuminate\Database\Eloquent\Model;
class Company extends Model
{
//
protected $fillable = ['company_profile', 'reg_cert', 'company_name', 'registration_no', 'tax_no', 'tel_no', 'fax', 'address', 'city', 'postcode', 'state', 'country', 'contact_person'];
protected $fillable = ['user_id', 'company_profile', 'reg_cert', 'company_name', 'registration_no', 'tax_no', 'tel_no', 'fax', 'address', 'city', 'postcode', 'state', 'country', 'contact_person'];
//protected $guarded = [];
public function user()
+25 -19
View File
@@ -7,6 +7,7 @@ use App\PasswordResets;
use JWTAuth;
use Auth;
use App\Role;
use App\Company;
use Aloha\Twilio\Twilio;
use Tymon\JWTAuth\Exceptions\JWTException;
@@ -30,10 +31,14 @@ class AuthController extends Controller
public function sendVerification(Request $request){
$credentials = $request->only('phone');
$rules = [
'phone' => 'required|digits:10|unique:users'
'phone' => 'required|digits_between:10,11|unique:users'
];
$validator = Validator::make($credentials, $rules);
if($validator->fails()){
return response()->json(['success'=> false, 'message'=> 'The minimum length should be 10.' ], 400);
}
// create user if not exist
$user = User::firstOrNew([
'phone' => $request->phone
@@ -41,24 +46,24 @@ class AuthController extends Controller
$user->save();
// create token if not exist, update if exist
$token = mt_rand(0000,9999);
$token = mt_rand(0000,9999);
// for testing
// for testing
if($request->phone == '0123456789'){
$token = "1234";
}
$user_verification = $user->phoneVerification()->firstOrNew([
'user_id' => $user->id,
]);
$user_verification->token = $token;
$user_verification->save();
// TODO: send token to phone
// TODO: send token to phone
//$message = "RM0.00 IZYIM: Verification code : ". $token;
//$twilio = new Twilio(env('TWILIO_ACC'), env('TWILIO_TOKEN'), env('TWILIO_NUMBER'));
//$twilio->message($request->phone, $message);
return response()->json(['success'=> true, 'message'=> 'A verification code has been send to your mobile number.' ]);
return response()->json(['success'=> true, 'message'=> 'A verification code has been send to your mobile number.' ], 200);
}
@@ -79,14 +84,14 @@ class AuthController extends Controller
return response()->json([
'success'=> true,
'message'=> 'Account already verified.'
]);
], 200);
}
}
else{
return response()->json([
'success'=> false,
'message'=> 'Please contact support.'
]);
], 400);
}
// check and verify valid token
@@ -100,16 +105,16 @@ class AuthController extends Controller
return response()->json(['error' => 'invalid_credentials'], 401);
}
// TODO : Create company for user
// TODO : Create company for user
$expiration = JWTAuth::setToken($userToken)->getPayload()->get('exp');
// all good so return the token
return response()->json(['success' => true, 'token' => $userToken,
'token_type' => 'bearer',
'expires_in' => $expiration - time()]);
}
return response()->json(['success'=> false, 'error'=> "Verification code is invalid."]);
return response()->json(['success'=> false, 'error'=> "Verification code is invalid."], 400);
}
/**
@@ -130,9 +135,9 @@ class AuthController extends Controller
$validator = Validator::make($credentials, $rules);
if($validator->fails()) {
return response()->json(['success'=> false, 'error'=> $validator->messages()]);
return response()->json(['success'=> false, 'error'=> $validator->messages()], 400);
}
$name = $request->name;
$password = $request->password;
$role = $request->role;
@@ -146,12 +151,13 @@ class AuthController extends Controller
$user->attachRole($role);
$user->update(['name' => $name, 'password' => Hash::make($password)]);
// TODO : create company for user
$company = new Company;
$company->user = $user;
// TODO : create company for user
$company = new Company;
$company->user_id = $user->id;
$company->save();
return response()->json(['success'=> true, 'message'=> 'Profile updated.']);
return response()->json(['success'=> true, 'message'=> 'Profile updated.'], 200);
}
@@ -179,7 +185,7 @@ class AuthController extends Controller
try {
// attempt to verify the credentials and create a token for the user
if (! $token = JWTAuth::attempt($credentials)) {
return response()->json(['success' => false, 'error' => 'We cant find an account with this credentials. Please make sure you entered the right information and you have verified your email address.'], 401);
return response()->json(['success' => false, 'error' => 'Phone or password incorrect'], 401);
}
} catch (JWTException $e) {
// something went wrong whilst attempting to encode the token
+29 -8
View File
@@ -15,9 +15,30 @@ class CompanyController extends Controller
$company = Company::where("user_id", Auth::user()->id)->first();
if (!$company)
{
return response()->json(['message'=>'company not found'], 404);
return response()->json(['success'=> false, 'message'=>'Company not found'], 404);
}
$rules = [
'company_name' => 'required',
'registration_no' => 'required',
'tax_no' => 'required',
'tax_no' => 'required',
'tel_no' => 'required',
'fax' => 'required',
'address' => 'required',
'city' => 'required',
'postcode' => 'required',
'state' => 'required',
'country' => 'required',
'contact_person' => 'required'
];
$validator = Validator::make($request->all(), $rules);
if($validator->fails()) {
return response()->json(['success'=> false, 'error'=> 'All the fields are required'], 400);
//return response()->json(['success'=> false, 'error'=> $validator->messages()], 400);
}
$company->company_name=$request->input('company_name');
$company->registration_no=$request->input('registration_no');
$company->tax_no=$request->input('tax_no');
@@ -31,7 +52,7 @@ class CompanyController extends Controller
$company->contact_person=$request->input('contact_person');
$company->save();
return response()->json(['company'=>$company],200);
return response()->json(['success'=> true, 'message'=>'Company created successfully'],200);
}
public function companyProfile(Request $request)
@@ -39,7 +60,7 @@ class CompanyController extends Controller
$company = Company::where("user_id", Auth::user()->id)->first();
if (!$company)
{
return response()->json(['message'=>'company for company_prof not found'],200);
return response()->json(['success'=> false, 'error'=>'Company not found'], 404);
}
//validaating file types
$validator = Validator::make($request->all(), [
@@ -47,7 +68,7 @@ class CompanyController extends Controller
]);
if($validator->fails())
{
return response()->json(['message'=>'Incorrect format'],200);
return response()->json(['success'=> false, 'error'=>'Incorrect format'], 400);
}
if($file = $request->file('company_profile')) //company profile picture
@@ -65,7 +86,7 @@ class CompanyController extends Controller
$company->company_profile = $unique_name. '.' .$ext; //update database
} //end if
$company->save();
return response()->json(['company'=>$company],200);
return response()->json(['success'=> true, 'message'=>'Company profile picture uploaded successfully'],200);
}//end of companyProfile()
public function regCert(Request $request)
@@ -73,7 +94,7 @@ class CompanyController extends Controller
$company = Company::where("user_id", Auth::user()->id)->first();
if (!$company)
{
return response()->json(['message'=>'Company not found'], 404);
return response()->json(['success'=> false, 'error'=>'Company not found'], 404);
}
//validating file types
@@ -81,7 +102,7 @@ class CompanyController extends Controller
'reg_cert' => 'mimes:jpg,jpeg,bmp,png,gif,svg,pdf'
]);
if($validator->fails()){
return response()->json(['message'=>'Incorrect format'],200);
return response()->json(['success'=> false, 'error'=>'Incorrect format'], 400);
}
if($request->hasFile('reg_cert')) //Registration Certificate upload
@@ -99,7 +120,7 @@ class CompanyController extends Controller
$company->reg_cert = $unique_name. '.' .$ext; //this updates database
}//end if
$company->save();
return response()->json(['company'=>$company],200);
return response()->json(['success'=> true, 'message'=>'Registration Certificate uploaded successfully'], 200);
}//end regCert()
}//end of class
@@ -25,6 +25,6 @@ class ChangeEmailToMobileFromUser extends Migration
*/
public function down()
{
$table->renameColumn('phone', 'email');
//$table->renameColumn('phone', 'email');
}
}
+13702
View File
File diff suppressed because it is too large Load Diff
+96 -12
View File
@@ -3,6 +3,7 @@
<title>AzureUI - Term</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css">
<link href="https://fonts.googleapis.com/css?family=Nunito:300,400,600,700,900" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="css/font-awesome.min.css" />
<link rel="stylesheet" type="text/css" href="css/global.style.css" />
@@ -10,6 +11,7 @@
.header {
width:relative;
margin: 0 auto;
height: 30px;
}
#backbtn {
@@ -41,6 +43,7 @@
<div class="container">
<main class="fix-top-menu">
<section class="container">
<!--company profile
<form>
<div class="form-row txt-center">
<div class="profile-image">
@@ -53,21 +56,40 @@
</div>
</div>
</div>
</form>
-->
<br>
<form>
<div class="form-row txt-center">
<b>Please upload the registration certificate.</b>
<label class="update-btn fix">
<input id="reg_cert" type="file" style="display:none" /> Please upload the registration certificate
<div class="form-row txt-center">
<input id="reg_cert" type="file" />
<div class="form-divider"></div>
<a href="#" id="regCert" style="width:50%; margin-left:25%;" class="button block green">Upload</a>
</div>
</label>
</div>
<br>
<div class="form-label-divider">
<span class="label-span">Company Information</span>
</div>
<div class="form-divider"></div>
</form>
<div class="form-divider"></div>
<div class="form-divider"></div>
<div class="alert alert-danger" id="alert" role="alert" style="display: none"></div>
<div class="alert alert-success" id="alert1" role="alert1" style="display: none"></div>
<br>
<div class="form-label-divider">
<span class="label-span">Company Information</span>
</div>
<div class="form-divider"></div>
<div class="alert alert-danger" id="alert2" role="alert2" style="display: none"></div>
<form>
<div class="form-row-group">
<div class="form-row no-padding">
<input id="company-name" type="text" class="form-element" placeholder="Company Name" required />
@@ -102,20 +124,82 @@
<div class="form-row no-padding">
<input id="contact-person" type="text" class="form-element" placeholder="Contact Person" required />
</div>
<div class="form-row no-padding">
<input id="contact-person-no" type="text" class="form-element" placeholder="Contact Person No" required />
</div>
</div>
<div class="form-divider"></div>
<div class="form-row txt-center">
<a href="#" style="width:50%; margin-left:25%;" class="button block green">Edit</a>
</div>
<a href="#" id="companyDetails" style="width:50%; margin-left:25%;" class="button block green">Submit</a>
</div>
</form>
</section>
</main>
</div>
<!-- Main Content End Here -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js" integrity="sha384-uefMccjFJAIv6A+rW+L4AHf99KvxDjWSu1z9VI8SKNVmz4sk7buKt/6v9KI65qnm" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js" integrity="sha384-cs/chFZiN24E4KMATLdqdvsezGxaGsi4hLGOzlXwp5UZB1LY//20VyM2taTB4QvJ" crossorigin="anonymous"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#regCert').click(function() {
var fd = new FormData();
var files = $('#reg_cert')[0].files[0];
fd.append('reg_cert',files);
$.ajax({
type: "POST",
url: "api/company/reg_cert/",
headers: {"Authorization": 'Bearer' + localStorage.getItem('token')},
data:fd,
contentType: false,
cache: false,
processData: false,
success: function(data) {
document.getElementById("alert").style.display = "none";
console.log(data.message);
$('#alert1').html(data.message);
$('#alert1').show();
},
error: function(data) {
console.log(data);
document.getElementById("alert1").style.display = "none";
$('#alert').html(data.responseJSON.error);
$('#alert').show();
}
});
})
$('#companyDetails').click(function() {
$.ajax({
type: "PATCH",
url: "api/company",
headers: {"Authorization": 'Bearer' + localStorage.getItem('token')},
data: {
company_name: $('#company-name').val(),
registration_no: $('#registration-no').val(),
tax_no: $('#tax-no').val(),
tel_no: $('#tel-no').val(),
fax: $('#fax').val(),
address: $('#address').val(),
city: $('#city').val(),
postcode: $('#postcode').val(),
state: $('#state').val(),
country: $('#country').val(),
contact_person: $('#contact-person').val()
},
success: function(data) {
//alert("success");
document.location.href="home.html";
},
error: function(data) {
//console.log(data);
$('#alert2').html(data.responseJSON.error);
$('#alert2').show();
}
});
})
})
</script>
</body>
</html>
+11 -3
View File
@@ -4,6 +4,7 @@
<title>AzureUI - SIGNIN</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css">
<link href="https://fonts.googleapis.com/css?family=Nunito:300,400,600,700,900" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="css/global.style.css">
@@ -21,6 +22,9 @@
<section class="container">
<form>
@csrf
<div class="alert alert-danger" role="alert" style="display: none">
</div>
<div class="form-row-group with-icons">
<div class="form-row no-padding">
<div style="position:absolute; top: 10px;">
@@ -36,6 +40,7 @@
</div>
</div>
<div class="form-divider"></div>
<div class="form-row txt-center">
@@ -60,6 +65,8 @@
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js" integrity="sha384-uefMccjFJAIv6A+rW+L4AHf99KvxDjWSu1z9VI8SKNVmz4sk7buKt/6v9KI65qnm" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js" integrity="sha384-cs/chFZiN24E4KMATLdqdvsezGxaGsi4hLGOzlXwp5UZB1LY//20VyM2taTB4QvJ" crossorigin="anonymous"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#login').click(function() {
@@ -73,10 +80,11 @@
success: function(data) {
localStorage.token = data.data.token;
document.location.href="home.html";
alert('Got a token from the server! Token: ' + data.data.token);
},
error: function() {
alert("Login Failed");}
error: function(data) {
$('.alert').html(data.responseJSON.error);
$('.alert').show();
}
});
})
})
+20 -4
View File
@@ -4,6 +4,7 @@
<title>AzureUI - Term</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css">
<link href="https://fonts.googleapis.com/css?family=Nunito:300,400,600,700,900" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="css/font-awesome.min.css" />
<link rel="stylesheet" type="text/css" href="css/global.style.css" />
@@ -42,6 +43,10 @@
<div class="form-divider"></div>
<div class="alert alert-danger" id="alert" role="alert" style="display: none"></div>
<div class="form-divider"></div>
<div class="form-row-group with-icons-no-padding">
<div class="form-row no-padding">
<div class="form-element-title">
@@ -95,6 +100,8 @@
<script src="js/global.script.js"></script>
<!-- Require For All Pages -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js" integrity="sha384-uefMccjFJAIv6A+rW+L4AHf99KvxDjWSu1z9VI8SKNVmz4sk7buKt/6v9KI65qnm" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js" integrity="sha384-cs/chFZiN24E4KMATLdqdvsezGxaGsi4hLGOzlXwp5UZB1LY//20VyM2taTB4QvJ" crossorigin="anonymous"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#pers-info').click(function() {
@@ -109,11 +116,20 @@
password_confirmation:$('#password_confirmation').val()
},
success: function(data) {
document.location.href="index.html";
document.location.href="company-profile.html";
},
error: function() {
alert("Failed");}
})
error: function(data) {
var errors = $.parseJSON(data.responseText);
//console.log(errors.error);
if (errors != null){
for (var i in errors.error) {
//console.log(errors.error[i][0]);
$('.alert').append(errors.error[i][0] + "<br/>");
}
}
$('.alert').show();
}
})
})
});
</script>
+13 -4
View File
@@ -4,6 +4,7 @@
<title>AzureUI - Term</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css">
<link href="https://fonts.googleapis.com/css?family=Nunito:300,400,600,700,900" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="css/font-awesome.min.css" />
<link rel="stylesheet" type="text/css" href="css/global.style.css" />
@@ -24,6 +25,9 @@
<div class="form-divider"></div>
<!--Error Alert-->
<div class="alert alert-danger" role="alert" style="display: none"></div>
<!-- Here Lies Main Start Here -->
<main>
<section class="container">
@@ -52,6 +56,8 @@
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js" integrity="sha384-uefMccjFJAIv6A+rW+L4AHf99KvxDjWSu1z9VI8SKNVmz4sk7buKt/6v9KI65qnm" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js" integrity="sha384-cs/chFZiN24E4KMATLdqdvsezGxaGsi4hLGOzlXwp5UZB1LY//20VyM2taTB4QvJ" crossorigin="anonymous"></script>
<script type="text/javascript">
function readCookie(name) {
var nameEQ = encodeURIComponent(name) + "=";
@@ -78,16 +84,19 @@
token: $('#verify-code').val()},
success: function(data) {
if( data.success){
localStorage.token = data.token;
document.location.href="profile-first-setup.html";
localStorage.token = data.data.token;
}
else{
console.log('wrong code');
//console.log('wrong code');
$('.alert').html(data.success.message);
$('.alert').show();
}
//
},
error: function() {
alert("Failed");}
error: function(data) {
$('.alert').html(data.responseJSON.error);
$('.alert').show();}
});
})
})
+15 -5
View File
@@ -4,6 +4,7 @@
<title>AzureUI - Term</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css">
<link href="https://fonts.googleapis.com/css?family=Nunito:300,400,600,700,900" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="css/font-awesome.min.css" />
<link rel="stylesheet" type="text/css" href="css/global.style.css" />
@@ -37,8 +38,8 @@
</div>
<select class="form-element">
<option value="">Select your country</option>
<option value="1" selected>Malaysia</option>
<option value="2">China</option>
<option value="1" selected>Malaysia +6</option>
<option value="2">China +86</option>
</select>
</div>
@@ -46,10 +47,15 @@
<div style="position:absolute; top:10px">
<a class="fa fa-phone"></a>
</div>
<input id="mobile" type="text" class="form-element" placeholder="Enter your phone number" required />
<input id="mobile" type="tel" class="form-element" placeholder="Enter your phone number" required />
</div>
</div>
<div class="form-divider"></div>
<!--Error Alert-->
<div class="alert alert-danger" role="alert" style="display: none"></div>
<!-- AzFooter Start Here-->
<div class="azfooter">
<div class="azfmain-button">
@@ -71,6 +77,8 @@
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js" integrity="sha384-uefMccjFJAIv6A+rW+L4AHf99KvxDjWSu1z9VI8SKNVmz4sk7buKt/6v9KI65qnm" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js" integrity="sha384-cs/chFZiN24E4KMATLdqdvsezGxaGsi4hLGOzlXwp5UZB1LY//20VyM2taTB4QvJ" crossorigin="anonymous"></script>
<script type="text/javascript">
function createCookie(name, value, days) {
var expires;
@@ -97,8 +105,10 @@
document.location.href="verify-code-number.html";
},
Cookies:createCookie('phone', mobile, 60),
error: function() {
alert("Failed");}
error: function(data) {
$('.alert').html(data.responseJSON.message);
$('.alert').show();
}
});
})
})