Permalink
Show file tree
Hide file tree
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
first commit
- Loading branch information
aathish
committed
Jul 28, 2022
0 parents
commit dce9e715b1ff5c4838540f1b760afb60ee0c067b
Showing
19 changed files
with
1,098 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
# Files and directories created by pub. | ||
.dart_tool/ | ||
.packages | ||
|
||
# Conventional directory for build output. | ||
build/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
## 1.0.0 | ||
|
||
- Initial version. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
A simple command-line application. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
# This file configures the static analysis results for your project (errors, | ||
# warnings, and lints). | ||
# | ||
# This enables the 'recommended' set of lints from `package:lints`. | ||
# This set helps identify many issues that may lead to problems when running | ||
# or consuming Dart code, and enforces writing Dart using a single, idiomatic | ||
# style and format. | ||
# | ||
# If you want a smaller set of lints you can change this to specify | ||
# 'package:lints/core.yaml'. These are just the most critical lints | ||
# (the recommended set includes the core lints). | ||
# The core lints are also what is used by pub.dev for scoring packages. | ||
|
||
include: package:lints/recommended.yaml | ||
|
||
# Uncomment the following section to specify additional rules. | ||
|
||
# linter: | ||
# rules: | ||
# - camel_case_types | ||
|
||
# analyzer: | ||
# exclude: | ||
# - path/to/excluded/files/** | ||
|
||
# For more information about the core and recommended set of lints, see | ||
# https://dart.dev/go/core-lints | ||
|
||
# For additional information about configuring this file, see | ||
# https://dart.dev/guides/language/analysis-options |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
class ApiConfigs { | ||
static const String sendGridKey = | ||
'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'; | ||
static const String email = "kumarshashi5294@gmail.com"; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,137 @@ | ||
import 'dart:convert'; | ||
|
||
import 'package:mongo_dart/mongo_dart.dart'; | ||
import 'package:shelf/shelf.dart'; | ||
|
||
import '../db/mongo_config.dart'; | ||
|
||
class MortgageController { | ||
final mortgageRef = DBSetup().mortgageRef; | ||
Future<Response> getAllMortgages( | ||
Request request, | ||
) async { | ||
try { | ||
var result = await mortgageRef.find().toList(); | ||
var data = []; | ||
for (var element in result) { | ||
var user = element; | ||
user.remove('password'); | ||
data.add(user); | ||
} | ||
return Response.ok( | ||
jsonEncode(data), | ||
); | ||
} catch (e) { | ||
return Response.internalServerError( | ||
body: jsonEncode({"message": "$e"}), | ||
); | ||
} | ||
} | ||
|
||
Future<Response> getMortgageById(Request request, String mortgageId) async { | ||
try { | ||
var result = await mortgageRef | ||
.findOne({'_id': ObjectId.fromHexString(mortgageId)}); | ||
var data = result; | ||
return Response.ok( | ||
jsonEncode(data), | ||
); | ||
} catch (e) { | ||
return Response.internalServerError( | ||
body: jsonEncode({"message": "$e"}), | ||
); | ||
} | ||
} | ||
|
||
Future<Response> createMortgage( | ||
Request request, | ||
) async { | ||
try { | ||
var body = await request.readAsString(); | ||
var data = jsonDecode(body); | ||
var mortgage = { | ||
'deposit': data['deposit'], | ||
'interest': data['interest'], | ||
'userId': ObjectId.fromHexString(data['userId']), | ||
'tenure': data['tenure'], | ||
'total': data['total'], | ||
'createdAt': DateTime.now().toIso8601String() | ||
}; | ||
if (mortgage.values.contains(null)) { | ||
return Response.internalServerError( | ||
body: jsonEncode({"message": "Please fill all the fields"}), | ||
); | ||
} | ||
var result = await mortgageRef.insertOne(mortgage); | ||
return Response.ok( | ||
jsonEncode(result.document), | ||
); | ||
} catch (e) { | ||
return Response.internalServerError( | ||
body: jsonEncode({"message": "$e"}), | ||
); | ||
} | ||
} | ||
|
||
Future<Response> updateMortgage( | ||
Request request, | ||
) async { | ||
try { | ||
var body = await request.readAsString(); | ||
var data = jsonDecode(body); | ||
var id = data['_id']; | ||
var mortgage = { | ||
'deposit': data['deposit'], | ||
'interest': data['interest'], | ||
'tenure': data['tenure'], | ||
'total': data['total'], | ||
'createdAt': data['createdAt'], | ||
}; | ||
if (mortgage.values.contains(null)) { | ||
return Response.internalServerError( | ||
body: jsonEncode({"message": "Please fill all the fields"}), | ||
); | ||
} | ||
var result = await mortgageRef.updateOne( | ||
{'_id': ObjectId.fromHexString(id ?? "")}, | ||
{'\$set': mortgage}, | ||
); | ||
return Response.ok( | ||
jsonEncode(result.document), | ||
); | ||
} catch (e) { | ||
return Response.internalServerError( | ||
body: jsonEncode({"message": "$e"}), | ||
); | ||
} | ||
} | ||
|
||
Future<Response> deleteMortgage(Request request, String mortgageId) async { | ||
try { | ||
var result = await mortgageRef.deleteOne( | ||
{'_id': ObjectId.fromHexString(mortgageId)}, | ||
); | ||
return Response.ok( | ||
jsonEncode(result.document), | ||
); | ||
} catch (e) { | ||
return Response.internalServerError( | ||
body: jsonEncode({"message": "$e"}), | ||
); | ||
} | ||
} | ||
|
||
Future<Response> getMortgageByUserId(Request request, String userId) async { | ||
try { | ||
var result = await mortgageRef | ||
.find({'userId': ObjectId.fromHexString(userId)}).toList(); | ||
return Response.ok( | ||
jsonEncode(result), | ||
); | ||
} catch (e) { | ||
return Response.internalServerError( | ||
body: jsonEncode({"message": "$e"}), | ||
); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,152 @@ | ||
import 'dart:convert'; | ||
|
||
import 'package:mongo_dart/mongo_dart.dart'; | ||
import 'package:shelf/shelf.dart'; | ||
|
||
import '../db/mongo_config.dart'; | ||
|
||
class UserController { | ||
var userRef = DBSetup().userRef; | ||
Future<Response> login(Request request) async { | ||
var body = jsonDecode(await request.readAsString()); | ||
try { | ||
var result = await DBSetup().userRef.findOne( | ||
{"email": body['email'], 'password': body['password']}, | ||
); | ||
if (result != null) { | ||
result.remove('password'); | ||
return Response.ok( | ||
jsonEncode(result), | ||
); | ||
} else { | ||
return Response.notFound( | ||
jsonEncode({"message": "No user found"}), | ||
); | ||
} | ||
} catch (e) { | ||
return Response.internalServerError( | ||
body: jsonEncode({"message": "$e"}), | ||
); | ||
} | ||
} | ||
|
||
Future<Response> signUp(Request request) async { | ||
try { | ||
var body = jsonDecode(await request.readAsString()); | ||
var user = { | ||
"email": body['email'], | ||
"password": body['password'], | ||
"depositSize": body['depositSize'], | ||
"currentRental": body['currentRental'], | ||
"fixedRental": body['fixedRental'], | ||
"amountLeft": body['amountLeft'], | ||
"avgWage": body['avgWage'], | ||
"phoneNumber": body['phoneNumber'], | ||
"username": body['username'], | ||
"borrowAmount": body['borrowAmount'], | ||
'createdAt': DateTime.now().toIso8601String(), | ||
}; | ||
if (user.values.contains(null)) { | ||
return Response.badRequest( | ||
body: jsonEncode({"message": "Missing required fields"}), | ||
); | ||
} | ||
var res = await userRef.findOne({'email': user['email']}); | ||
if (res != null) { | ||
return Response.badRequest( | ||
body: jsonEncode({"message": "User already exists"}), | ||
); | ||
} | ||
var dbRes = await DBSetup().userRef.insertOne( | ||
user, | ||
); | ||
if (dbRes.hasWriteErrors) { | ||
return Response.internalServerError( | ||
body: jsonEncode({"message": "Users already exists"}), | ||
); | ||
} | ||
|
||
return Response.ok(jsonEncode(dbRes.document)); | ||
} catch (e) { | ||
return Response.internalServerError( | ||
body: jsonEncode({"message": "$e"}), | ||
); | ||
} | ||
} | ||
|
||
Future<Response> getUserDetails(Request request, String userId) async { | ||
try { | ||
var result = await DBSetup() | ||
.userRef | ||
.findOne({"_id": ObjectId.fromHexString(userId)}); | ||
if (result != null) { | ||
result.remove('password'); | ||
return Response.ok( | ||
jsonEncode(result), | ||
); | ||
} else { | ||
return Response.notFound( | ||
jsonEncode({"message": "No user found"}), | ||
); | ||
} | ||
} catch (e) { | ||
return Response.internalServerError( | ||
body: jsonEncode({"message": "$e"}), | ||
); | ||
} | ||
} | ||
|
||
Future<Response> getAllUsers( | ||
Request request, | ||
) async { | ||
try { | ||
var result = await DBSetup().userRef.find().toList(); | ||
var data = []; | ||
for (var element in result) { | ||
var user = element; | ||
user.remove('password'); | ||
data.add(user); | ||
} | ||
return Response.ok( | ||
jsonEncode(data), | ||
); | ||
} catch (e) { | ||
return Response.internalServerError( | ||
body: jsonEncode({"message": "$e"}), | ||
); | ||
} | ||
} | ||
|
||
Future<Response> updateUser(Request request, String userId) async { | ||
try { | ||
var body = jsonDecode(await request.readAsString()); | ||
var isUserExists = await DBSetup() | ||
.userRef | ||
.findOne({"_id": ObjectId.fromHexString(userId)}); | ||
|
||
if (isUserExists != null) { | ||
var newUser = isUserExists; | ||
newUser['username'] = body['username'] ?? isUserExists['username']; | ||
newUser['phonenumber'] = body['phonenumber']?.toString() ?? | ||
isUserExists['phonenumber']?.toString(); | ||
print("New user will be :$newUser"); | ||
var res = await DBSetup().userRef.updateOne( | ||
{"_id": ObjectId.fromHexString(userId)}, | ||
{'\$set': body}, | ||
); | ||
print( | ||
"Write errors:${res.writeError},document:${res.document},id:$userId"); | ||
return Response.ok( | ||
jsonEncode({"message": "Updated user successfully"})); | ||
} else { | ||
return Response.notFound( | ||
jsonEncode({"message": "No user found"}), | ||
); | ||
} | ||
} catch (e) { | ||
return Response.internalServerError( | ||
body: jsonEncode({"message": "$e"}), | ||
); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
import 'package:mongo_dart/mongo_dart.dart'; | ||
|
||
class DBSetup { | ||
DbCollection userRef = db.collection('users'); | ||
DbCollection mortgageRef = db.collection('mortgage'); | ||
|
||
static late Db db; | ||
|
||
static const String mongoUrl = | ||
'mongodb+srv://shashiben:Shashiben7@cluster0.qrn8lm6.mongodb.net/mortgage?retryWrites=true&w=majority'; | ||
static init() async { | ||
try { | ||
db = await Db.create(mongoUrl); | ||
await db.open(); | ||
print("Mongo is connected"); | ||
} on MongoDartError catch (e) { | ||
print('Mongo Exception: ${e.message}'); | ||
} catch (e) { | ||
print("Exception: $e"); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
import 'package:shelf/shelf.dart'; | ||
import 'package:shelf_router/shelf_router.dart'; | ||
|
||
import 'mortgage.routes.dart'; | ||
import 'user.routes.dart'; | ||
|
||
class InitRoute { | ||
Handler get handler { | ||
var router = Router(); | ||
router.mount('/user', UserRoutes().handler); | ||
router.mount('/mortgage', MortgagegRoutes().handler); | ||
return router; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
import 'package:shelf/shelf.dart'; | ||
import 'package:shelf_router/shelf_router.dart'; | ||
|
||
import '../controllers/mortgage.controller.dart'; | ||
|
||
class MortgagegRoutes { | ||
Handler get handler { | ||
final MortgageController _mortgageController = MortgageController(); | ||
|
||
var router = Router(); | ||
router.get('/', _mortgageController.getAllMortgages); | ||
router.get('/<mortgageId>', _mortgageController.getMortgageById); | ||
router.post('/', _mortgageController.createMortgage); | ||
router.put('/', _mortgageController.updateMortgage); | ||
router.delete('/<mortgageId>', _mortgageController.deleteMortgage); | ||
router.get('/user/<userId>', _mortgageController.getMortgageByUserId); | ||
return router; | ||
} | ||
} |
Oops, something went wrong.