This commit is contained in:
Jayesh jain
2024-07-25 23:34:06 +05:30
parent cd13209831
commit fe805f9f2e
17 changed files with 1052 additions and 331 deletions

View File

@@ -280,10 +280,11 @@ final goRouter = GoRouter(
),
GoRoute(
name: RouteName.investDetailScreen,
path: "${RouteName.investDetailScreen}/:type",
path: "${RouteName.investDetailScreen}/:type/:id",
builder: (context, state) {
return InvestDetailsScreen(
type: state.pathParameters["type"]!,
id: state.pathParameters["id"]!,
);
},
),

View File

@@ -8,19 +8,19 @@ class AvailableIOModel {
AvailableIOModel.fromJson(Map<String, dynamic> json) {
statusCode = json['statusCode'];
data = json['data'] != null ? Data.fromJson(json['data']) : null;
data = json['data'] != null ? new Data.fromJson(json['data']) : null;
message = json['message'];
success = json['success'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['statusCode'] = statusCode;
final Map<String, dynamic> data = new Map<String, dynamic>();
data['statusCode'] = this.statusCode;
if (this.data != null) {
data['data'] = this.data!.toJson();
}
data['message'] = message;
data['success'] = success;
data['message'] = this.message;
data['success'] = this.success;
return data;
}
}
@@ -38,7 +38,7 @@ class Data {
if (json['rows'] != null) {
rows = <Rows>[];
json['rows'].forEach((v) {
rows!.add(Rows.fromJson(v));
rows!.add(new Rows.fromJson(v));
});
}
totalPages = json['totalPages'];
@@ -46,13 +46,13 @@ class Data {
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['totalItems'] = totalItems;
if (rows != null) {
data['rows'] = rows!.map((v) => v.toJson()).toList();
final Map<String, dynamic> data = new Map<String, dynamic>();
data['totalItems'] = this.totalItems;
if (this.rows != null) {
data['rows'] = this.rows!.map((v) => v.toJson()).toList();
}
data['totalPages'] = totalPages;
data['currentPage'] = currentPage;
data['totalPages'] = this.totalPages;
data['currentPage'] = this.currentPage;
return data;
}
}
@@ -79,15 +79,15 @@ class Rows {
bool? isInvestedAmount;
String? amountInvested;
bool? isActive;
Null createdBy;
Null modifiedBy;
Null? createdBy;
Null? modifiedBy;
String? createdAt;
String? updatedAt;
Null deletedAt;
Null? deletedAt;
Sponsor? sponsor;
IoStatus? ioStatus;
InvestmentType? investmentType;
List<String>? artifactsImage;
List<ArtifactsImage>? artifactsImage;
List<MinInvestmentAmt>? minInvestmentAmt;
Rows(
@@ -151,69 +151,71 @@ class Rows {
updatedAt = json['updatedAt'];
deletedAt = json['deletedAt'];
sponsor =
json['sponsor'] != null ? Sponsor.fromJson(json['sponsor']) : null;
ioStatus =
json['ioStatus'] != null ? IoStatus.fromJson(json['ioStatus']) : null;
json['sponsor'] != null ? new Sponsor.fromJson(json['sponsor']) : null;
ioStatus = json['ioStatus'] != null
? new IoStatus.fromJson(json['ioStatus'])
: null;
investmentType = json['investmentType'] != null
? InvestmentType.fromJson(json['investmentType'])
? new InvestmentType.fromJson(json['investmentType'])
: null;
if (json['artifactsImage'] != null) {
artifactsImage = <String>[];
artifactsImage = <ArtifactsImage>[];
json['artifactsImage'].forEach((v) {
artifactsImage!.add(v);
artifactsImage!.add(new ArtifactsImage.fromJson(v));
});
}
if (json['minInvestmentAmt'] != null) {
minInvestmentAmt = <MinInvestmentAmt>[];
json['minInvestmentAmt'].forEach((v) {
minInvestmentAmt!.add(MinInvestmentAmt.fromJson(v));
minInvestmentAmt!.add(new MinInvestmentAmt.fromJson(v));
});
}
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
data['io_id'] = ioId;
data['investmentType_xid'] = investmentTypeXid;
data['sponsor_xid'] = sponsorXid;
data['ioStatus_xid'] = ioStatusXid;
data['investmentNameEnglish'] = investmentNameEnglish;
data['investmentNameArabic'] = investmentNameArabic;
data['descriptionEnglish'] = descriptionEnglish;
data['descriptionArabic'] = descriptionArabic;
data['goalAmount'] = goalAmount;
data['closingDate'] = closingDate;
data['holdingPeriod'] = holdingPeriod;
data['expectedReturn'] = expectedReturn;
data['originalValuation'] = originalValuation;
data['currentValuation'] = currentValuation;
data['ISIN'] = iSIN;
data['InvestmentDetails'] = investmentDetails;
data['comment'] = comment;
data['isInvestedAmount'] = isInvestedAmount;
data['amountInvested'] = amountInvested;
data['isActive'] = isActive;
data['createdBy'] = createdBy;
data['modifiedBy'] = modifiedBy;
data['createdAt'] = createdAt;
data['updatedAt'] = updatedAt;
data['deletedAt'] = deletedAt;
if (sponsor != null) {
data['sponsor'] = sponsor!.toJson();
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['io_id'] = this.ioId;
data['investmentType_xid'] = this.investmentTypeXid;
data['sponsor_xid'] = this.sponsorXid;
data['ioStatus_xid'] = this.ioStatusXid;
data['investmentNameEnglish'] = this.investmentNameEnglish;
data['investmentNameArabic'] = this.investmentNameArabic;
data['descriptionEnglish'] = this.descriptionEnglish;
data['descriptionArabic'] = this.descriptionArabic;
data['goalAmount'] = this.goalAmount;
data['closingDate'] = this.closingDate;
data['holdingPeriod'] = this.holdingPeriod;
data['expectedReturn'] = this.expectedReturn;
data['originalValuation'] = this.originalValuation;
data['currentValuation'] = this.currentValuation;
data['ISIN'] = this.iSIN;
data['InvestmentDetails'] = this.investmentDetails;
data['comment'] = this.comment;
data['isInvestedAmount'] = this.isInvestedAmount;
data['amountInvested'] = this.amountInvested;
data['isActive'] = this.isActive;
data['createdBy'] = this.createdBy;
data['modifiedBy'] = this.modifiedBy;
data['createdAt'] = this.createdAt;
data['updatedAt'] = this.updatedAt;
data['deletedAt'] = this.deletedAt;
if (this.sponsor != null) {
data['sponsor'] = this.sponsor!.toJson();
}
if (ioStatus != null) {
data['ioStatus'] = ioStatus!.toJson();
if (this.ioStatus != null) {
data['ioStatus'] = this.ioStatus!.toJson();
}
if (investmentType != null) {
data['investmentType'] = investmentType!.toJson();
if (this.investmentType != null) {
data['investmentType'] = this.investmentType!.toJson();
}
if (artifactsImage != null) {
data['artifactsImage'] = artifactsImage!.map((v) => v).toList();
if (this.artifactsImage != null) {
data['artifactsImage'] =
this.artifactsImage!.map((v) => v.toJson()).toList();
}
if (minInvestmentAmt != null) {
if (this.minInvestmentAmt != null) {
data['minInvestmentAmt'] =
minInvestmentAmt!.map((v) => v.toJson()).toList();
this.minInvestmentAmt!.map((v) => v.toJson()).toList();
}
return data;
}
@@ -224,17 +226,17 @@ class Sponsor {
String? sponsorName;
String? sponsorNameArabic;
String? email;
Null profile;
Null address;
Null mobileNo;
Null bankName;
Null accountNumber;
Null? profile;
Null? address;
Null? mobileNo;
Null? bankName;
Null? accountNumber;
bool? isActive;
Null createdBy;
Null modifiedBy;
Null? createdBy;
Null? modifiedBy;
String? createdAt;
String? updatedAt;
Null deletedAt;
Null? deletedAt;
Sponsor(
{this.id,
@@ -272,22 +274,22 @@ class Sponsor {
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
data['sponsorName'] = sponsorName;
data['sponsorNameArabic'] = sponsorNameArabic;
data['email'] = email;
data['profile'] = profile;
data['address'] = address;
data['mobileNo'] = mobileNo;
data['bankName'] = bankName;
data['accountNumber'] = accountNumber;
data['isActive'] = isActive;
data['createdBy'] = createdBy;
data['modifiedBy'] = modifiedBy;
data['createdAt'] = createdAt;
data['updatedAt'] = updatedAt;
data['deletedAt'] = deletedAt;
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['sponsorName'] = this.sponsorName;
data['sponsorNameArabic'] = this.sponsorNameArabic;
data['email'] = this.email;
data['profile'] = this.profile;
data['address'] = this.address;
data['mobileNo'] = this.mobileNo;
data['bankName'] = this.bankName;
data['accountNumber'] = this.accountNumber;
data['isActive'] = this.isActive;
data['createdBy'] = this.createdBy;
data['modifiedBy'] = this.modifiedBy;
data['createdAt'] = this.createdAt;
data['updatedAt'] = this.updatedAt;
data['deletedAt'] = this.deletedAt;
return data;
}
}
@@ -298,11 +300,11 @@ class IoStatus {
String? statusInvest;
String? statusPortfolio;
bool? isActive;
Null createdBy;
Null modifiedBy;
Null? createdBy;
Null? modifiedBy;
String? createdAt;
String? updatedAt;
Null deletedAt;
Null? deletedAt;
IoStatus(
{this.id,
@@ -330,17 +332,17 @@ class IoStatus {
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
data['statusAdmin'] = statusAdmin;
data['statusInvest'] = statusInvest;
data['statusPortfolio'] = statusPortfolio;
data['isActive'] = isActive;
data['createdBy'] = createdBy;
data['modifiedBy'] = modifiedBy;
data['createdAt'] = createdAt;
data['updatedAt'] = updatedAt;
data['deletedAt'] = deletedAt;
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['statusAdmin'] = this.statusAdmin;
data['statusInvest'] = this.statusInvest;
data['statusPortfolio'] = this.statusPortfolio;
data['isActive'] = this.isActive;
data['createdBy'] = this.createdBy;
data['modifiedBy'] = this.modifiedBy;
data['createdAt'] = this.createdAt;
data['updatedAt'] = this.updatedAt;
data['deletedAt'] = this.deletedAt;
return data;
}
}
@@ -352,11 +354,11 @@ class InvestmentType {
String? note;
String? noteArabic;
bool? isActive;
Null createdBy;
Null modifiedBy;
Null? createdBy;
Null? modifiedBy;
String? createdAt;
String? updatedAt;
Null deletedAt;
Null? deletedAt;
InvestmentType(
{this.id,
@@ -386,18 +388,75 @@ class InvestmentType {
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
data['investmentTypeName'] = investmentTypeName;
data['investmentTypeNameArabic'] = investmentTypeNameArabic;
data['note'] = note;
data['noteArabic'] = noteArabic;
data['isActive'] = isActive;
data['createdBy'] = createdBy;
data['modifiedBy'] = modifiedBy;
data['createdAt'] = createdAt;
data['updatedAt'] = updatedAt;
data['deletedAt'] = deletedAt;
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['investmentTypeName'] = this.investmentTypeName;
data['investmentTypeNameArabic'] = this.investmentTypeNameArabic;
data['note'] = this.note;
data['noteArabic'] = this.noteArabic;
data['isActive'] = this.isActive;
data['createdBy'] = this.createdBy;
data['modifiedBy'] = this.modifiedBy;
data['createdAt'] = this.createdAt;
data['updatedAt'] = this.updatedAt;
data['deletedAt'] = this.deletedAt;
return data;
}
}
class ArtifactsImage {
int? id;
int? ioXid;
String? artifactName;
String? artifactPathName;
int? displayOrder;
bool? isActive;
Null? createdBy;
Null? modifiedBy;
String? createdAt;
String? updatedAt;
Null? deletedAt;
ArtifactsImage(
{this.id,
this.ioXid,
this.artifactName,
this.artifactPathName,
this.displayOrder,
this.isActive,
this.createdBy,
this.modifiedBy,
this.createdAt,
this.updatedAt,
this.deletedAt});
ArtifactsImage.fromJson(Map<String, dynamic> json) {
id = json['id'];
ioXid = json['io_xid'];
artifactName = json['artifactName'];
artifactPathName = json['artifactPathName'];
displayOrder = json['displayOrder'];
isActive = json['isActive'];
createdBy = json['createdBy'];
modifiedBy = json['modifiedBy'];
createdAt = json['createdAt'];
updatedAt = json['updatedAt'];
deletedAt = json['deletedAt'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['io_xid'] = this.ioXid;
data['artifactName'] = this.artifactName;
data['artifactPathName'] = this.artifactPathName;
data['displayOrder'] = this.displayOrder;
data['isActive'] = this.isActive;
data['createdBy'] = this.createdBy;
data['modifiedBy'] = this.modifiedBy;
data['createdAt'] = this.createdAt;
data['updatedAt'] = this.updatedAt;
data['deletedAt'] = this.deletedAt;
return data;
}
}
@@ -409,11 +468,11 @@ class MinInvestmentAmt {
String? minInvestmentAmt;
String? maxInvestmentAmt;
bool? isActive;
Null createdBy;
Null modifiedBy;
Null? createdBy;
Null? modifiedBy;
String? createdAt;
String? updatedAt;
Null deletedAt;
Null? deletedAt;
MinInvestmentAmt(
{this.id,
@@ -443,18 +502,18 @@ class MinInvestmentAmt {
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
data['io_xid'] = ioXid;
data['country_xid'] = countryXid;
data['minInvestmentAmt'] = minInvestmentAmt;
data['maxInvestmentAmt'] = maxInvestmentAmt;
data['isActive'] = isActive;
data['createdBy'] = createdBy;
data['modifiedBy'] = modifiedBy;
data['createdAt'] = createdAt;
data['updatedAt'] = updatedAt;
data['deletedAt'] = deletedAt;
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['io_xid'] = this.ioXid;
data['country_xid'] = this.countryXid;
data['minInvestmentAmt'] = this.minInvestmentAmt;
data['maxInvestmentAmt'] = this.maxInvestmentAmt;
data['isActive'] = this.isActive;
data['createdBy'] = this.createdBy;
data['modifiedBy'] = this.modifiedBy;
data['createdAt'] = this.createdAt;
data['updatedAt'] = this.updatedAt;
data['deletedAt'] = this.deletedAt;
return data;
}
}

View File

@@ -8,19 +8,19 @@ class ClosedIOModel {
ClosedIOModel.fromJson(Map<String, dynamic> json) {
statusCode = json['statusCode'];
data = json['data'] != null ? Data.fromJson(json['data']) : null;
data = json['data'] != null ? new Data.fromJson(json['data']) : null;
message = json['message'];
success = json['success'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['statusCode'] = statusCode;
final Map<String, dynamic> data = new Map<String, dynamic>();
data['statusCode'] = this.statusCode;
if (this.data != null) {
data['data'] = this.data!.toJson();
}
data['message'] = message;
data['success'] = success;
data['message'] = this.message;
data['success'] = this.success;
return data;
}
}
@@ -38,7 +38,7 @@ class Data {
if (json['rows'] != null) {
rows = <Rows>[];
json['rows'].forEach((v) {
rows!.add(Rows.fromJson(v));
rows!.add(new Rows.fromJson(v));
});
}
totalPages = json['totalPages'];
@@ -46,13 +46,13 @@ class Data {
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['totalItems'] = totalItems;
if (rows != null) {
data['rows'] = rows!.map((v) => v.toJson()).toList();
final Map<String, dynamic> data = new Map<String, dynamic>();
data['totalItems'] = this.totalItems;
if (this.rows != null) {
data['rows'] = this.rows!.map((v) => v.toJson()).toList();
}
data['totalPages'] = totalPages;
data['currentPage'] = currentPage;
data['totalPages'] = this.totalPages;
data['currentPage'] = this.currentPage;
return data;
}
}
@@ -79,15 +79,15 @@ class Rows {
bool? isInvestedAmount;
String? amountInvested;
bool? isActive;
Null createdBy;
Null modifiedBy;
Null? createdBy;
Null? modifiedBy;
String? createdAt;
String? updatedAt;
Null deletedAt;
Null? deletedAt;
Sponsor? sponsor;
IoStatus? ioStatus;
InvestmentType? investmentType;
List<String>? artifactsImage;
List<ArtifactsImage>? artifactsImage;
List<MinInvestmentAmt>? minInvestmentAmt;
Rows(
@@ -151,90 +151,149 @@ class Rows {
updatedAt = json['updatedAt'];
deletedAt = json['deletedAt'];
sponsor =
json['sponsor'] != null ? Sponsor.fromJson(json['sponsor']) : null;
ioStatus =
json['ioStatus'] != null ? IoStatus.fromJson(json['ioStatus']) : null;
json['sponsor'] != null ? new Sponsor.fromJson(json['sponsor']) : null;
ioStatus = json['ioStatus'] != null
? new IoStatus.fromJson(json['ioStatus'])
: null;
investmentType = json['investmentType'] != null
? InvestmentType.fromJson(json['investmentType'])
? new InvestmentType.fromJson(json['investmentType'])
: null;
if (json['artifactsImage'] != null) {
artifactsImage = <String>[];
artifactsImage = <ArtifactsImage>[];
json['artifactsImage'].forEach((v) {
artifactsImage!.add(v);
artifactsImage!.add(new ArtifactsImage.fromJson(v));
});
}
if (json['minInvestmentAmt'] != null) {
minInvestmentAmt = <MinInvestmentAmt>[];
json['minInvestmentAmt'].forEach((v) {
minInvestmentAmt!.add(MinInvestmentAmt.fromJson(v));
minInvestmentAmt!.add(new MinInvestmentAmt.fromJson(v));
});
}
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
data['io_id'] = ioId;
data['investmentType_xid'] = investmentTypeXid;
data['sponsor_xid'] = sponsorXid;
data['ioStatus_xid'] = ioStatusXid;
data['investmentNameEnglish'] = investmentNameEnglish;
data['investmentNameArabic'] = investmentNameArabic;
data['descriptionEnglish'] = descriptionEnglish;
data['descriptionArabic'] = descriptionArabic;
data['goalAmount'] = goalAmount;
data['closingDate'] = closingDate;
data['holdingPeriod'] = holdingPeriod;
data['expectedReturn'] = expectedReturn;
data['originalValuation'] = originalValuation;
data['currentValuation'] = currentValuation;
data['ISIN'] = iSIN;
data['InvestmentDetails'] = investmentDetails;
data['comment'] = comment;
data['isInvestedAmount'] = isInvestedAmount;
data['amountInvested'] = amountInvested;
data['isActive'] = isActive;
data['createdBy'] = createdBy;
data['modifiedBy'] = modifiedBy;
data['createdAt'] = createdAt;
data['updatedAt'] = updatedAt;
data['deletedAt'] = deletedAt;
if (sponsor != null) {
data['sponsor'] = sponsor!.toJson();
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['io_id'] = this.ioId;
data['investmentType_xid'] = this.investmentTypeXid;
data['sponsor_xid'] = this.sponsorXid;
data['ioStatus_xid'] = this.ioStatusXid;
data['investmentNameEnglish'] = this.investmentNameEnglish;
data['investmentNameArabic'] = this.investmentNameArabic;
data['descriptionEnglish'] = this.descriptionEnglish;
data['descriptionArabic'] = this.descriptionArabic;
data['goalAmount'] = this.goalAmount;
data['closingDate'] = this.closingDate;
data['holdingPeriod'] = this.holdingPeriod;
data['expectedReturn'] = this.expectedReturn;
data['originalValuation'] = this.originalValuation;
data['currentValuation'] = this.currentValuation;
data['ISIN'] = this.iSIN;
data['InvestmentDetails'] = this.investmentDetails;
data['comment'] = this.comment;
data['isInvestedAmount'] = this.isInvestedAmount;
data['amountInvested'] = this.amountInvested;
data['isActive'] = this.isActive;
data['createdBy'] = this.createdBy;
data['modifiedBy'] = this.modifiedBy;
data['createdAt'] = this.createdAt;
data['updatedAt'] = this.updatedAt;
data['deletedAt'] = this.deletedAt;
if (this.sponsor != null) {
data['sponsor'] = this.sponsor!.toJson();
}
if (ioStatus != null) {
data['ioStatus'] = ioStatus!.toJson();
if (this.ioStatus != null) {
data['ioStatus'] = this.ioStatus!.toJson();
}
if (investmentType != null) {
data['investmentType'] = investmentType!.toJson();
if (this.investmentType != null) {
data['investmentType'] = this.investmentType!.toJson();
}
if (artifactsImage != null) {
data['artifactsImage'] = artifactsImage!.map((v) => v).toList();
if (this.artifactsImage != null) {
data['artifactsImage'] =
this.artifactsImage!.map((v) => v.toJson()).toList();
}
if (minInvestmentAmt != null) {
if (this.minInvestmentAmt != null) {
data['minInvestmentAmt'] =
minInvestmentAmt!.map((v) => v.toJson()).toList();
this.minInvestmentAmt!.map((v) => v.toJson()).toList();
}
return data;
}
}
class ArtifactsImage {
int? id;
int? ioXid;
String? artifactName;
String? artifactPathName;
int? displayOrder;
bool? isActive;
Null? createdBy;
Null? modifiedBy;
String? createdAt;
String? updatedAt;
Null? deletedAt;
ArtifactsImage(
{this.id,
this.ioXid,
this.artifactName,
this.artifactPathName,
this.displayOrder,
this.isActive,
this.createdBy,
this.modifiedBy,
this.createdAt,
this.updatedAt,
this.deletedAt});
ArtifactsImage.fromJson(Map<String, dynamic> json) {
id = json['id'];
ioXid = json['io_xid'];
artifactName = json['artifactName'];
artifactPathName = json['artifactPathName'];
displayOrder = json['displayOrder'];
isActive = json['isActive'];
createdBy = json['createdBy'];
modifiedBy = json['modifiedBy'];
createdAt = json['createdAt'];
updatedAt = json['updatedAt'];
deletedAt = json['deletedAt'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['io_xid'] = this.ioXid;
data['artifactName'] = this.artifactName;
data['artifactPathName'] = this.artifactPathName;
data['displayOrder'] = this.displayOrder;
data['isActive'] = this.isActive;
data['createdBy'] = this.createdBy;
data['modifiedBy'] = this.modifiedBy;
data['createdAt'] = this.createdAt;
data['updatedAt'] = this.updatedAt;
data['deletedAt'] = this.deletedAt;
return data;
}
}
class Sponsor {
int? id;
String? sponsorName;
String? sponsorNameArabic;
String? email;
Null profile;
Null address;
Null mobileNo;
Null bankName;
Null accountNumber;
Null? profile;
Null? address;
Null? mobileNo;
Null? bankName;
Null? accountNumber;
bool? isActive;
Null createdBy;
Null modifiedBy;
Null? createdBy;
Null? modifiedBy;
String? createdAt;
String? updatedAt;
Null deletedAt;
Null? deletedAt;
Sponsor(
{this.id,
@@ -272,22 +331,22 @@ class Sponsor {
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
data['sponsorName'] = sponsorName;
data['sponsorNameArabic'] = sponsorNameArabic;
data['email'] = email;
data['profile'] = profile;
data['address'] = address;
data['mobileNo'] = mobileNo;
data['bankName'] = bankName;
data['accountNumber'] = accountNumber;
data['isActive'] = isActive;
data['createdBy'] = createdBy;
data['modifiedBy'] = modifiedBy;
data['createdAt'] = createdAt;
data['updatedAt'] = updatedAt;
data['deletedAt'] = deletedAt;
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['sponsorName'] = this.sponsorName;
data['sponsorNameArabic'] = this.sponsorNameArabic;
data['email'] = this.email;
data['profile'] = this.profile;
data['address'] = this.address;
data['mobileNo'] = this.mobileNo;
data['bankName'] = this.bankName;
data['accountNumber'] = this.accountNumber;
data['isActive'] = this.isActive;
data['createdBy'] = this.createdBy;
data['modifiedBy'] = this.modifiedBy;
data['createdAt'] = this.createdAt;
data['updatedAt'] = this.updatedAt;
data['deletedAt'] = this.deletedAt;
return data;
}
}
@@ -298,11 +357,11 @@ class IoStatus {
String? statusInvest;
String? statusPortfolio;
bool? isActive;
Null createdBy;
Null modifiedBy;
Null? createdBy;
Null? modifiedBy;
String? createdAt;
String? updatedAt;
Null deletedAt;
Null? deletedAt;
IoStatus(
{this.id,
@@ -330,17 +389,17 @@ class IoStatus {
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
data['statusAdmin'] = statusAdmin;
data['statusInvest'] = statusInvest;
data['statusPortfolio'] = statusPortfolio;
data['isActive'] = isActive;
data['createdBy'] = createdBy;
data['modifiedBy'] = modifiedBy;
data['createdAt'] = createdAt;
data['updatedAt'] = updatedAt;
data['deletedAt'] = deletedAt;
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['statusAdmin'] = this.statusAdmin;
data['statusInvest'] = this.statusInvest;
data['statusPortfolio'] = this.statusPortfolio;
data['isActive'] = this.isActive;
data['createdBy'] = this.createdBy;
data['modifiedBy'] = this.modifiedBy;
data['createdAt'] = this.createdAt;
data['updatedAt'] = this.updatedAt;
data['deletedAt'] = this.deletedAt;
return data;
}
}
@@ -352,11 +411,11 @@ class InvestmentType {
String? note;
String? noteArabic;
bool? isActive;
Null createdBy;
Null modifiedBy;
Null? createdBy;
Null? modifiedBy;
String? createdAt;
String? updatedAt;
Null deletedAt;
Null? deletedAt;
InvestmentType(
{this.id,
@@ -386,18 +445,18 @@ class InvestmentType {
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
data['investmentTypeName'] = investmentTypeName;
data['investmentTypeNameArabic'] = investmentTypeNameArabic;
data['note'] = note;
data['noteArabic'] = noteArabic;
data['isActive'] = isActive;
data['createdBy'] = createdBy;
data['modifiedBy'] = modifiedBy;
data['createdAt'] = createdAt;
data['updatedAt'] = updatedAt;
data['deletedAt'] = deletedAt;
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['investmentTypeName'] = this.investmentTypeName;
data['investmentTypeNameArabic'] = this.investmentTypeNameArabic;
data['note'] = this.note;
data['noteArabic'] = this.noteArabic;
data['isActive'] = this.isActive;
data['createdBy'] = this.createdBy;
data['modifiedBy'] = this.modifiedBy;
data['createdAt'] = this.createdAt;
data['updatedAt'] = this.updatedAt;
data['deletedAt'] = this.deletedAt;
return data;
}
}
@@ -409,11 +468,11 @@ class MinInvestmentAmt {
String? minInvestmentAmt;
String? maxInvestmentAmt;
bool? isActive;
Null createdBy;
Null modifiedBy;
Null? createdBy;
Null? modifiedBy;
String? createdAt;
String? updatedAt;
Null deletedAt;
Null? deletedAt;
MinInvestmentAmt(
{this.id,
@@ -443,18 +502,18 @@ class MinInvestmentAmt {
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
data['io_xid'] = ioXid;
data['country_xid'] = countryXid;
data['minInvestmentAmt'] = minInvestmentAmt;
data['maxInvestmentAmt'] = maxInvestmentAmt;
data['isActive'] = isActive;
data['createdBy'] = createdBy;
data['modifiedBy'] = modifiedBy;
data['createdAt'] = createdAt;
data['updatedAt'] = updatedAt;
data['deletedAt'] = deletedAt;
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['io_xid'] = this.ioXid;
data['country_xid'] = this.countryXid;
data['minInvestmentAmt'] = this.minInvestmentAmt;
data['maxInvestmentAmt'] = this.maxInvestmentAmt;
data['isActive'] = this.isActive;
data['createdBy'] = this.createdBy;
data['modifiedBy'] = this.modifiedBy;
data['createdAt'] = this.createdAt;
data['updatedAt'] = this.updatedAt;
data['deletedAt'] = this.deletedAt;
return data;
}
}

View File

@@ -0,0 +1,465 @@
class DetailIOModel {
int? statusCode;
Data? data;
String? message;
bool? success;
DetailIOModel({this.statusCode, this.data, this.message, this.success});
DetailIOModel.fromJson(Map<String, dynamic> json) {
statusCode = json['statusCode'];
data = json['data'] != null ? new Data.fromJson(json['data']) : null;
message = json['message'];
success = json['success'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['statusCode'] = this.statusCode;
if (this.data != null) {
data['data'] = this.data!.toJson();
}
data['message'] = this.message;
data['success'] = this.success;
return data;
}
}
class Data {
int? id;
String? ioId;
int? investmentTypeXid;
int? sponsorXid;
int? ioStatusXid;
String? investmentNameEnglish;
String? investmentNameArabic;
String? descriptionEnglish;
String? descriptionArabic;
String? goalAmount;
String? closingDate;
String? holdingPeriod;
String? expectedReturn;
String? originalValuation;
String? currentValuation;
String? iSIN;
String? investmentDetails;
String? comment;
bool? isInvestedAmount;
String? amountInvested;
bool? isActive;
Null? createdBy;
Null? modifiedBy;
String? createdAt;
String? updatedAt;
Null? deletedAt;
Sponsor? sponsor;
IoStatus? ioStatus;
InvestmentType? investmentType;
// List<Null>? documents;
// List<Null>? artifactsVideo;
// List<Null>? artifactsImage;
List<MinInvestmentAmt>? minInvestmentAmt;
// List<Null>? keyMerits;
Data({
this.id,
this.ioId,
this.investmentTypeXid,
this.sponsorXid,
this.ioStatusXid,
this.investmentNameEnglish,
this.investmentNameArabic,
this.descriptionEnglish,
this.descriptionArabic,
this.goalAmount,
this.closingDate,
this.holdingPeriod,
this.expectedReturn,
this.originalValuation,
this.currentValuation,
this.iSIN,
this.investmentDetails,
this.comment,
this.isInvestedAmount,
this.amountInvested,
this.isActive,
this.createdBy,
this.modifiedBy,
this.createdAt,
this.updatedAt,
this.deletedAt,
this.sponsor,
this.ioStatus,
this.investmentType,
// this.documents,
// this.artifactsVideo,
// this.artifactsImage,
this.minInvestmentAmt,
// this.keyMerits
});
Data.fromJson(Map<String, dynamic> json) {
id = json['id'];
ioId = json['io_id'];
investmentTypeXid = json['investmentType_xid'];
sponsorXid = json['sponsor_xid'];
ioStatusXid = json['ioStatus_xid'];
investmentNameEnglish = json['investmentNameEnglish'];
investmentNameArabic = json['investmentNameArabic'];
descriptionEnglish = json['descriptionEnglish'];
descriptionArabic = json['descriptionArabic'];
goalAmount = json['goalAmount'];
closingDate = json['closingDate'];
holdingPeriod = json['holdingPeriod'];
expectedReturn = json['expectedReturn'];
originalValuation = json['originalValuation'];
currentValuation = json['currentValuation'];
iSIN = json['ISIN'];
investmentDetails = json['InvestmentDetails'];
comment = json['comment'];
isInvestedAmount = json['isInvestedAmount'];
amountInvested = json['amountInvested'];
isActive = json['isActive'];
createdBy = json['createdBy'];
modifiedBy = json['modifiedBy'];
createdAt = json['createdAt'];
updatedAt = json['updatedAt'];
deletedAt = json['deletedAt'];
sponsor =
json['sponsor'] != null ? new Sponsor.fromJson(json['sponsor']) : null;
ioStatus = json['ioStatus'] != null
? new IoStatus.fromJson(json['ioStatus'])
: null;
investmentType = json['investmentType'] != null
? new InvestmentType.fromJson(json['investmentType'])
: null;
// if (json['documents'] != null) {
// documents = <Null>[];
// json['documents'].forEach((v) {
// documents!.add(new Null.fromJson(v));
// });
// }
// if (json['artifactsVideo'] != null) {
// artifactsVideo = <Null>[];
// json['artifactsVideo'].forEach((v) {
// artifactsVideo!.add(new Null.fromJson(v));
// });
// }
// if (json['artifactsImage'] != null) {
// artifactsImage = <Null>[];
// json['artifactsImage'].forEach((v) {
// artifactsImage!.add(new Null.fromJson(v));
// });
// }
if (json['minInvestmentAmt'] != null) {
minInvestmentAmt = <MinInvestmentAmt>[];
json['minInvestmentAmt'].forEach((v) {
minInvestmentAmt!.add(new MinInvestmentAmt.fromJson(v));
});
}
// if (json['keyMerits'] != null) {
// keyMerits = <Null>[];
// json['keyMerits'].forEach((v) {
// keyMerits!.add(new Null.fromJson(v));
// });
// }
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['io_id'] = this.ioId;
data['investmentType_xid'] = this.investmentTypeXid;
data['sponsor_xid'] = this.sponsorXid;
data['ioStatus_xid'] = this.ioStatusXid;
data['investmentNameEnglish'] = this.investmentNameEnglish;
data['investmentNameArabic'] = this.investmentNameArabic;
data['descriptionEnglish'] = this.descriptionEnglish;
data['descriptionArabic'] = this.descriptionArabic;
data['goalAmount'] = this.goalAmount;
data['closingDate'] = this.closingDate;
data['holdingPeriod'] = this.holdingPeriod;
data['expectedReturn'] = this.expectedReturn;
data['originalValuation'] = this.originalValuation;
data['currentValuation'] = this.currentValuation;
data['ISIN'] = this.iSIN;
data['InvestmentDetails'] = this.investmentDetails;
data['comment'] = this.comment;
data['isInvestedAmount'] = this.isInvestedAmount;
data['amountInvested'] = this.amountInvested;
data['isActive'] = this.isActive;
data['createdBy'] = this.createdBy;
data['modifiedBy'] = this.modifiedBy;
data['createdAt'] = this.createdAt;
data['updatedAt'] = this.updatedAt;
data['deletedAt'] = this.deletedAt;
if (this.sponsor != null) {
data['sponsor'] = this.sponsor!.toJson();
}
if (this.ioStatus != null) {
data['ioStatus'] = this.ioStatus!.toJson();
}
if (this.investmentType != null) {
data['investmentType'] = this.investmentType!.toJson();
}
// if (this.documents != null) {
// data['documents'] = this.documents!.map((v) => v.toJson()).toList();
// }
// if (this.artifactsVideo != null) {
// data['artifactsVideo'] =
// this.artifactsVideo!.map((v) => v.toJson()).toList();
// }
// if (this.artifactsImage != null) {
// data['artifactsImage'] =
// this.artifactsImage!.map((v) => v.toJson()).toList();
// }
if (this.minInvestmentAmt != null) {
data['minInvestmentAmt'] =
this.minInvestmentAmt!.map((v) => v.toJson()).toList();
}
// if (this.keyMerits != null) {
// data['keyMerits'] = this.keyMerits!.map((v) => v.toJson()).toList();
// }
return data;
}
}
class Sponsor {
int? id;
String? sponsorName;
String? sponsorNameArabic;
String? email;
Null? profile;
Null? address;
Null? mobileNo;
Null? bankName;
Null? accountNumber;
bool? isActive;
Null? createdBy;
Null? modifiedBy;
String? createdAt;
String? updatedAt;
Null? deletedAt;
Sponsor(
{this.id,
this.sponsorName,
this.sponsorNameArabic,
this.email,
this.profile,
this.address,
this.mobileNo,
this.bankName,
this.accountNumber,
this.isActive,
this.createdBy,
this.modifiedBy,
this.createdAt,
this.updatedAt,
this.deletedAt});
Sponsor.fromJson(Map<String, dynamic> json) {
id = json['id'];
sponsorName = json['sponsorName'];
sponsorNameArabic = json['sponsorNameArabic'];
email = json['email'];
profile = json['profile'];
address = json['address'];
mobileNo = json['mobileNo'];
bankName = json['bankName'];
accountNumber = json['accountNumber'];
isActive = json['isActive'];
createdBy = json['createdBy'];
modifiedBy = json['modifiedBy'];
createdAt = json['createdAt'];
updatedAt = json['updatedAt'];
deletedAt = json['deletedAt'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['sponsorName'] = this.sponsorName;
data['sponsorNameArabic'] = this.sponsorNameArabic;
data['email'] = this.email;
data['profile'] = this.profile;
data['address'] = this.address;
data['mobileNo'] = this.mobileNo;
data['bankName'] = this.bankName;
data['accountNumber'] = this.accountNumber;
data['isActive'] = this.isActive;
data['createdBy'] = this.createdBy;
data['modifiedBy'] = this.modifiedBy;
data['createdAt'] = this.createdAt;
data['updatedAt'] = this.updatedAt;
data['deletedAt'] = this.deletedAt;
return data;
}
}
class IoStatus {
int? id;
String? statusAdmin;
String? statusInvest;
String? statusPortfolio;
bool? isActive;
Null? createdBy;
Null? modifiedBy;
String? createdAt;
String? updatedAt;
Null? deletedAt;
IoStatus(
{this.id,
this.statusAdmin,
this.statusInvest,
this.statusPortfolio,
this.isActive,
this.createdBy,
this.modifiedBy,
this.createdAt,
this.updatedAt,
this.deletedAt});
IoStatus.fromJson(Map<String, dynamic> json) {
id = json['id'];
statusAdmin = json['statusAdmin'];
statusInvest = json['statusInvest'];
statusPortfolio = json['statusPortfolio'];
isActive = json['isActive'];
createdBy = json['createdBy'];
modifiedBy = json['modifiedBy'];
createdAt = json['createdAt'];
updatedAt = json['updatedAt'];
deletedAt = json['deletedAt'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['statusAdmin'] = this.statusAdmin;
data['statusInvest'] = this.statusInvest;
data['statusPortfolio'] = this.statusPortfolio;
data['isActive'] = this.isActive;
data['createdBy'] = this.createdBy;
data['modifiedBy'] = this.modifiedBy;
data['createdAt'] = this.createdAt;
data['updatedAt'] = this.updatedAt;
data['deletedAt'] = this.deletedAt;
return data;
}
}
class InvestmentType {
int? id;
String? investmentTypeName;
String? investmentTypeNameArabic;
String? note;
String? noteArabic;
bool? isActive;
Null? createdBy;
Null? modifiedBy;
String? createdAt;
String? updatedAt;
Null? deletedAt;
InvestmentType(
{this.id,
this.investmentTypeName,
this.investmentTypeNameArabic,
this.note,
this.noteArabic,
this.isActive,
this.createdBy,
this.modifiedBy,
this.createdAt,
this.updatedAt,
this.deletedAt});
InvestmentType.fromJson(Map<String, dynamic> json) {
id = json['id'];
investmentTypeName = json['investmentTypeName'];
investmentTypeNameArabic = json['investmentTypeNameArabic'];
note = json['note'];
noteArabic = json['noteArabic'];
isActive = json['isActive'];
createdBy = json['createdBy'];
modifiedBy = json['modifiedBy'];
createdAt = json['createdAt'];
updatedAt = json['updatedAt'];
deletedAt = json['deletedAt'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['investmentTypeName'] = this.investmentTypeName;
data['investmentTypeNameArabic'] = this.investmentTypeNameArabic;
data['note'] = this.note;
data['noteArabic'] = this.noteArabic;
data['isActive'] = this.isActive;
data['createdBy'] = this.createdBy;
data['modifiedBy'] = this.modifiedBy;
data['createdAt'] = this.createdAt;
data['updatedAt'] = this.updatedAt;
data['deletedAt'] = this.deletedAt;
return data;
}
}
class MinInvestmentAmt {
int? id;
int? ioXid;
int? countryXid;
String? minInvestmentAmt;
String? maxInvestmentAmt;
bool? isActive;
Null? createdBy;
Null? modifiedBy;
String? createdAt;
String? updatedAt;
Null? deletedAt;
MinInvestmentAmt(
{this.id,
this.ioXid,
this.countryXid,
this.minInvestmentAmt,
this.maxInvestmentAmt,
this.isActive,
this.createdBy,
this.modifiedBy,
this.createdAt,
this.updatedAt,
this.deletedAt});
MinInvestmentAmt.fromJson(Map<String, dynamic> json) {
id = json['id'];
ioXid = json['io_xid'];
countryXid = json['country_xid'];
minInvestmentAmt = json['minInvestmentAmt'];
maxInvestmentAmt = json['maxInvestmentAmt'];
isActive = json['isActive'];
createdBy = json['createdBy'];
modifiedBy = json['modifiedBy'];
createdAt = json['createdAt'];
updatedAt = json['updatedAt'];
deletedAt = json['deletedAt'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['io_xid'] = this.ioXid;
data['country_xid'] = this.countryXid;
data['minInvestmentAmt'] = this.minInvestmentAmt;
data['maxInvestmentAmt'] = this.maxInvestmentAmt;
data['isActive'] = this.isActive;
data['createdBy'] = this.createdBy;
data['modifiedBy'] = this.modifiedBy;
data['createdAt'] = this.createdAt;
data['updatedAt'] = this.updatedAt;
data['deletedAt'] = this.deletedAt;
return data;
}
}

View File

@@ -14,4 +14,10 @@ class IOApi {
final response = await NetworkApiService().get(url);
return response;
}
Future<ResponseData> iODetailsAPI(int id) async {
String url = "${ApiEndpoints.detailsIOApi}$id";
final response = await NetworkApiService().get(url);
return response;
}
}

View File

@@ -0,0 +1,34 @@
// video_bloc.dart
import 'dart:async';
import 'package:bloc/bloc.dart';
import 'package:tanami_app/features/MainScreens/Invest/domain/model/detail_io_model.dart';
import 'package:tanami_app/features/MainScreens/Invest/domain/repository/io_api.dart';
import '../../../../../../Api_Helper/base_manager.dart';
import '../../../../../../Globalconst.dart';
import 'io_details_event.dart';
import 'io_details_state.dart';
class IODetailsBloc extends Bloc<IODetailsEvent, IODetailsState> {
final int id;
IODetailsBloc({required this.id}) : super(IODetailsStateInitial()) {
on<IODetailsEvent>(mapEventToState);
}
Future<void> mapEventToState(
IODetailsEvent event, Emitter<IODetailsState> emit) async {
emit(IODetailsStateLoading());
try {
ResponseData response = await IOApi().iODetailsAPI(id);
if (response.status == ResponseStatus.SUCCESS) {
DetailIOModel detailIOModel = DetailIOModel.fromJson(response.data);
emit(IODetailsStateLoaded(detailIOModel));
}
} catch (e) {
emit(IODetailsError(Globalconst.languageSelected == "en"
? 'Oops Something went wrong'
: "تبا شيء ما حدث بشكل خاطئ"));
}
}
}

View File

@@ -0,0 +1,16 @@
// video_event.dart
import 'package:equatable/equatable.dart';
abstract class IODetailsEvent extends Equatable {
const IODetailsEvent();
@override
List<Object> get props => [];
}
class FetchIODetailsData extends IODetailsEvent {
const FetchIODetailsData();
@override
List<Object> get props => [];
}

View File

@@ -0,0 +1,32 @@
// video_state.dart
import 'package:equatable/equatable.dart';
import 'package:tanami_app/features/MainScreens/Invest/domain/model/detail_io_model.dart';
abstract class IODetailsState extends Equatable {
const IODetailsState();
@override
List<Object> get props => [];
}
class IODetailsStateInitial extends IODetailsState {}
class IODetailsStateLoading extends IODetailsState {}
class IODetailsStateLoaded extends IODetailsState {
final DetailIOModel detailIOModel;
const IODetailsStateLoaded(this.detailIOModel);
@override
List<Object> get props => [detailIOModel];
}
class IODetailsError extends IODetailsState {
final String message;
const IODetailsError(this.message);
@override
List<Object> get props => [message];
}

View File

@@ -1,9 +1,12 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:gap/gap.dart';
import 'package:tanami_app/core/styles/app_color.dart';
import 'package:tanami_app/features/MainScreens/Invest/presentation/bloc/io_invest/io_details_state.dart';
import 'package:tanami_app/features/MainScreens/Invest/presentation/widgets/invest_video_section.dart';
import '../bloc/io_invest/io_details_bloc.dart';
import '../widgets/invest_detail_details_section.dart';
import '../widgets/invest_detail_image_carousel.dart';
import '../widgets/invest_included_documents_section.dart';
@@ -17,15 +20,22 @@ class InvestDetailsLayout extends StatelessWidget {
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: AppColor.plainWhite,
body: SingleChildScrollView(
body:
BlocBuilder<IODetailsBloc, IODetailsState>(builder: (context, state) {
if (state is IODetailsStateLoading) {
return const Center(child: CircularProgressIndicator());
} else if (state is IODetailsStateLoaded) {
return SingleChildScrollView(
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 20.0),
padding:
const EdgeInsets.symmetric(horizontal: 16.0, vertical: 20.0),
child: Column(
children: [
Container(
decoration: BoxDecoration(
color: AppColor.plainWhite,
borderRadius: const BorderRadius.all(Radius.circular(20.0)),
borderRadius:
const BorderRadius.all(Radius.circular(20.0)),
boxShadow: [
BoxShadow(
color: AppColor.plainBlack.withOpacity(0.15),
@@ -39,9 +49,11 @@ class InvestDetailsLayout extends StatelessWidget {
children: [
InvestDetailCarouselView(
type: type,
detailIOModel: state.detailIOModel,
),
InvestDetailDetailsSection(
type: type,
detailIOModel: state.detailIOModel,
),
],
),
@@ -55,11 +67,17 @@ class InvestDetailsLayout extends StatelessWidget {
? const SizedBox()
: const InvestIncludedDocumentsSection(),
type == "closed" ? const SizedBox() : Gap(20.h),
type == "closed" ? const SizedBox() : const InvestVideoSection(),
type == "closed"
? const SizedBox()
: const InvestVideoSection(),
],
),
),
),
);
} else {
return const Center(child: Text('Something went wrong!'));
}
}),
);
}
}

View File

@@ -5,6 +5,8 @@ import 'package:tanami_app/core/routes/route_name.dart';
import 'package:tanami_app/core/routes/routes.dart';
import 'package:tanami_app/core/styles/app_color.dart';
import 'package:tanami_app/core/styles/app_text.dart';
import 'package:tanami_app/features/MainScreens/Invest/presentation/bloc/io_invest/io_details_bloc.dart';
import 'package:tanami_app/features/MainScreens/Invest/presentation/bloc/io_invest/io_details_event.dart';
import 'package:tanami_app/shared/components/button_widget.dart';
import '../../../../../core/utils/language/localizations_delegate.dart';
@@ -14,7 +16,12 @@ import 'invest_details_layout.dart';
class InvestDetailsScreen extends StatelessWidget {
final String type;
const InvestDetailsScreen({super.key, required this.type});
final String id;
const InvestDetailsScreen({
super.key,
required this.type,
required this.id,
});
@override
Widget build(BuildContext context) {
@@ -45,6 +52,10 @@ class InvestDetailsScreen extends StatelessWidget {
// Create an instance of the OnboardingBloc
create: (context) => CarouselBloc(),
),
BlocProvider(
create: (context) => IODetailsBloc(id: int.parse(id))
..add(const FetchIODetailsData()),
)
],
child: InvestDetailsLayout(
type: type,

View File

@@ -92,7 +92,12 @@ class AvailableItemsScreen extends StatelessWidget {
: GestureDetector(
onTap: () {
goRouter.pushNamed(RouteName.investDetailScreen,
pathParameters: {"type": "available"});
pathParameters: {
"type": "available",
"id": state
.availableItems.data!.rows![index - 1].id!
.toString()
});
},
child: Container(
margin: const EdgeInsets.symmetric(
@@ -155,8 +160,11 @@ class ClosedItemsScreen extends StatelessWidget {
itemBuilder: (context, index) {
return GestureDetector(
onTap: () {
goRouter.pushNamed(RouteName.investDetailScreen,
pathParameters: {"type": "closed"});
goRouter
.pushNamed(RouteName.investDetailScreen, pathParameters: {
"type": "closed",
"id": state.closedItems.data!.rows![index].id!.toString()
});
},
child: Container(
margin: const EdgeInsets.symmetric(

View File

@@ -2,6 +2,8 @@ import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:gap/gap.dart';
import 'package:tanami_app/core/styles/app_color.dart';
import 'package:tanami_app/core/utils/date_time_formatter/date_time_formatter.dart';
import 'package:tanami_app/features/MainScreens/Invest/domain/model/detail_io_model.dart';
import '../../../../../core/styles/app_text.dart';
import '../../../../../core/utils/language/localizations_delegate.dart';
@@ -9,7 +11,9 @@ import '../../../../../shared/components/text_widget.dart';
class InvestDetailDetailsSection extends StatelessWidget {
final String type;
const InvestDetailDetailsSection({super.key, required this.type});
final DetailIOModel detailIOModel;
const InvestDetailDetailsSection(
{super.key, required this.type, required this.detailIOModel});
@override
Widget build(BuildContext context) {
@@ -24,7 +28,7 @@ class InvestDetailDetailsSection extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextWidget().text17W700(
'Multi Family Residental',
detailIOModel.data!.investmentNameEnglish!,
clr: AppColor.plainBlack,
),
Gap(
@@ -32,13 +36,18 @@ class InvestDetailDetailsSection extends StatelessWidget {
),
type == "closed"
? const SizedBox()
: TextWidget().text22W900("SAR 1,478,000",
: TextWidget().text22W900(
"USD ${detailIOModel.data!.goalAmount!}",
clr: AppColor.investTextColor),
type == "closed" ? const SizedBox() : const Gap(8.0),
type == "closed"
? const SizedBox()
: LinearProgressIndicator(
value: type == "closed" ? 1 : 0.6,
value: type == "closed"
? 1
: (double.parse(
detailIOModel.data!.amountInvested!) /
double.parse(detailIOModel.data!.goalAmount!)),
borderRadius: BorderRadius.circular(2),
minHeight: 8.0,
backgroundColor: AppColor.txtBorderColor,
@@ -51,11 +60,11 @@ class InvestDetailDetailsSection extends StatelessWidget {
: TextWidget().text11W700(
type == "closed"
? "100% ${localizations.translate(AppText.fundedText)}"
: "60% ${localizations.translate(AppText.fundedText)}",
: "${(double.parse(detailIOModel.data!.amountInvested!) / double.parse(detailIOModel.data!.goalAmount!)) * 100}% ${localizations.translate(AppText.fundedText)}",
clr: AppColor.portoflioCardTextColor),
type == "closed" ? const SizedBox() : const Gap(8.0),
TextWidget().text14W400(
'Forem ipsum dolor sit amet, consectetur adipiscing elit. Nunc vulputate libero et velit interdum, ac aliquet odio mattis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Curabitur tempus urna at turpis condimentum lobortis.',
detailIOModel.data!.descriptionEnglish!,
clr: Colors.grey,
txtAlign: TextAlign.start,
)
@@ -89,7 +98,7 @@ class InvestDetailDetailsSection extends StatelessWidget {
),
),
TextWidget().text14W700(
'Silverlake',
detailIOModel.data!.sponsor!.sponsorName!,
clr: AppColor.plainBlack,
txtAlign: TextAlign.end,
)
@@ -111,7 +120,7 @@ class InvestDetailDetailsSection extends StatelessWidget {
),
),
TextWidget().text14W700(
'20.0%',
detailIOModel.data!.expectedReturn!,
clr: AppColor.plainBlack,
txtAlign: TextAlign.end,
),
@@ -166,7 +175,7 @@ class InvestDetailDetailsSection extends StatelessWidget {
),
),
TextWidget().text14W700(
'24 Months',
detailIOModel.data!.holdingPeriod!,
clr: AppColor.plainBlack,
txtAlign: TextAlign.end,
),
@@ -188,7 +197,8 @@ class InvestDetailDetailsSection extends StatelessWidget {
txtAlign: TextAlign.start,
),
TextWidget().text14W700(
'August 1, 2027',
DateTimeFormatter()
.formatDate(detailIOModel.data!.closingDate!),
clr: AppColor.plainBlack,
txtAlign: TextAlign.end,
),
@@ -204,7 +214,7 @@ class InvestDetailDetailsSection extends StatelessWidget {
txtAlign: TextAlign.start,
),
TextWidget().text14W700(
'SAR 1,000',
'BHR ${detailIOModel.data!.minInvestmentAmt![0].minInvestmentAmt}',
clr: AppColor.plainBlack,
txtAlign: TextAlign.end,
),

View File

@@ -4,6 +4,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:gap/gap.dart';
import 'package:tanami_app/core/styles/app_color.dart';
import 'package:tanami_app/core/utils/date_time_formatter/date_time_formatter.dart';
import '../../../../../core/styles/app_images.dart';
import '../../../../../core/styles/app_text.dart';
@@ -12,6 +13,7 @@ import '../../../../../shared/components/text_widget.dart';
import '../../../Portfolio/presentation/bloc/carousel/carousel_bloc.dart';
import '../../../Portfolio/presentation/bloc/carousel/carousel_event.dart';
import '../../../Portfolio/presentation/bloc/carousel/carousel_state.dart';
import '../../domain/model/detail_io_model.dart';
final List imgList = [
{'id': 1, 'img_path': 'assets/images/portfolio_screen/detailsbg.png'},
@@ -24,9 +26,12 @@ final List imgList = [
class InvestDetailCarouselView extends StatelessWidget {
final String type;
final DetailIOModel detailIOModel;
final CarouselController _controller = CarouselController();
InvestDetailCarouselView({super.key, required this.type});
InvestDetailCarouselView(
{super.key, required this.type, required this.detailIOModel});
@override
Widget build(BuildContext context) {
@@ -113,7 +118,7 @@ class InvestDetailCarouselView extends StatelessWidget {
borderRadius: BorderRadius.circular(30.0),
),
child: TextWidget().text11W700(
'Asset Class',
detailIOModel.data!.investmentType!.investmentTypeName!,
clr: AppColor.selectedItemColor,
),
),
@@ -140,8 +145,8 @@ class InvestDetailCarouselView extends StatelessWidget {
),
TextWidget().text11W500(
type == "closed"
? '${localizations.translate(AppText.closedDateText)} Jul 10 2025'
: '${localizations.translate(AppText.closingDateText)} Jul 10 2025',
? '${localizations.translate(AppText.closedDateText)} ${DateTimeFormatter().formatDate(detailIOModel.data!.closingDate!)}'
: '${localizations.translate(AppText.closingDateText)} ${DateTimeFormatter().formatDate(detailIOModel.data!.closingDate!)}',
clr: AppColor.plainBlack,
),
],

View File

@@ -141,7 +141,7 @@ class InvestDetailsSection extends StatelessWidget {
),
),
TextWidget().text14W700(
availableIOModel.sponsor!.sponsorName!,
availableIOModel.sponsor!.sponsorName ?? "",
clr: AppColor.plainBlack,
txtAlign: TextAlign.end,
)

View File

@@ -4,22 +4,16 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:gap/gap.dart';
import 'package:tanami_app/core/styles/app_color.dart';
import 'package:tanami_app/shared/api/api_endpoints.dart';
import '../../../Portfolio/presentation/bloc/carousel/carousel_bloc.dart';
import '../../../Portfolio/presentation/bloc/carousel/carousel_event.dart';
import '../../../Portfolio/presentation/bloc/carousel/carousel_state.dart';
final List imgList = [
{'id': 1, 'img_path': 'assets/images/portfolio_screen/detailsbg.png'},
{'id': 2, 'img_path': 'assets/images/portfolio_screen/detailsbg.png'},
{'id': 3, 'img_path': 'assets/images/portfolio_screen/detailsbg.png'},
{'id': 4, 'img_path': 'assets/images/portfolio_screen/detailsbg.png'},
{'id': 5, 'img_path': 'assets/images/portfolio_screen/detailsbg.png'},
];
import '../../domain/model/available_io_model.dart';
class InvestCarouselView extends StatelessWidget {
final CarouselController _controller = CarouselController();
final List<String> imageList;
final List<ArtifactsImage> imageList;
InvestCarouselView({super.key, required this.imageList});
@@ -40,8 +34,8 @@ class InvestCarouselView extends StatelessWidget {
child: CarouselSlider(
items: imageList
.map(
(item) => Image.asset(
item,
(item) => Image.network(
"${ApiEndpoints.base}${item.artifactPathName!}",
fit: BoxFit.cover,
width: double.infinity,
alignment: Alignment.topCenter,

View File

@@ -45,4 +45,5 @@ class ApiEndpoints {
//IO
static const availableIOApi = "${baseurl}io/available";
static const closedIOApi = "${baseurl}io/closed";
static const detailsIOApi = "${baseurl}io/";
}

View File

@@ -30,9 +30,11 @@ class NetworkApiService {
response = await _dio.get(url,
options: (token == "")
? Options()
: Options(headers: {
: Options(
headers: {
"x-auth-token": token,
}));
},
));
if (response.statusCode == 201 || response.statusCode == 200) {
return ResponseData<dynamic>("success", ResponseStatus.SUCCESS,
data: response.data);