diff --git a/package-lock.json b/package-lock.json index 2e6bce3..65d935b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19342,8 +19342,7 @@ "bootstrap": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz", - "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==", - "requires": {} + "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==" }, "bootstrap-icons": { "version": "1.10.5", diff --git a/src/app/_modules/auth/admin-home/admin-home.component.html b/src/app/_modules/auth/admin-home/admin-home.component.html index 3f3ecfc..d536f74 100644 --- a/src/app/_modules/auth/admin-home/admin-home.component.html +++ b/src/app/_modules/auth/admin-home/admin-home.component.html @@ -1,10 +1,12 @@ +
+ -

+
@@ -12,23 +14,23 @@
+ +
- - search - - - - - -
-
- + + search + + + + + +

@@ -50,21 +52,21 @@
- + {{ 'title' | translate }} - sort + - + {{element?.title}} - + {{ 'publishedDate' | translate }} - sort + - + {{element?.publishDate| date:"YYYY-MM-dd"}} - + {{element?.bidOpenDate| date:"YYYY-MM-dd"}} - + - + --> @@ -141,6 +141,8 @@ +
+
\ No newline at end of file diff --git a/src/app/_modules/auth/admin-home/admin-home.component.scss b/src/app/_modules/auth/admin-home/admin-home.component.scss index e8c7b3f..c3aa901 100644 --- a/src/app/_modules/auth/admin-home/admin-home.component.scss +++ b/src/app/_modules/auth/admin-home/admin-home.component.scss @@ -66,14 +66,14 @@ td { display: flex; flex-wrap: wrap; justify-content: space-between; - border: 1px solid #e3e3e3; + // border: 1px solid #e3e3e3; width: 100%; margin: auto; padding: auto; } .header { - padding: 20px; + // padding: 20px; width: 100%; min-width: 350px; } @@ -106,6 +106,8 @@ mat-card { .top-right-float>button { margin: 5px; height: 40px; + margin-left: -70px; + margin-top: 7px; } mat-table { @@ -113,22 +115,30 @@ mat-table { width: 100%; display: table; overflow-x: scroll; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); .table-headers { padding: 5px; - color: #ffffff; + color: #353535; font-weight: 900; font-size: medium; - background-color: #46AC9E; + background-color: #ececec; + font-family:nucleo; + text-align: center; + } .table-headers:hover { background-color: #ececec; color:#46AC9E; + + } .table-content { padding: 5px; overflow-wrap: inherit; + font-family:nucleo; + } .table-column { @@ -153,15 +163,7 @@ input { } -// .dialog-body { -// display: flex; -// justify-content: center; -// align-items: center; -// div { -// width: 90%; -// } -// } .dialog-actions { display: flex; @@ -216,7 +218,7 @@ input { @media (max-width: 767px) { .card { - min-width: 600px; + min-width: 900px; } } @@ -226,5 +228,123 @@ input { } .mat-row:nth-child(odd){ - background-color: rgb(241, 241, 241); + background-color: rgb(248, 248, 248); +} +.viewButton{ + padding: 0; + border-radius: 16px !important; + height: 32px !important; + // width: 68px !important; + + float: center; + // margin-top: 5px; + // margin-bottom: 5px; + color: #424242; + background-color: white; + // height: 37px; + border-radius: 9px; + font-family: nucleo; + width: 8%; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + // margin-right: 5px; +} + +.reportButton{ + padding: 0; + // border-radius: 16px !important; + height: 32px !important; + // width: 68px !important; + + float: center; + // margin-top: 5px; + // margin-bottom: 5px; + color: #424242; + // background-color: white; + // height: 37px; + // border-radius: 9px; + font-family: nucleo; + width: 8%; + // box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + // margin-right: 5px; +} +.editButton { + + box-shadow: 0 2px 2px rgba(0, 0, 0, 0.1); + // transform: translateY(5px); + +} + +.editButton:hover { + box-shadow: 0 2px 2px rgba(0, 0, 0, 0.1); + /* You can adjust the shadow values to your preference */ +} + +.addButton{ + padding: 0; + border-radius: 16px !important; + height: 35px !important; + // width: 68px !important; + + float: center; + margin-top: 5px; + margin-bottom: 5px; + color: #424242; + background-color: white; + // height: 37px; + border-radius: 9px; + font-family: nucleo; + width: 11%; + // box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + // margin-right: 5px; } + +.addButton:hover{ + + background-color: #ebeaea ; + box-shadow: 0 2px rgb(129, 129, 129)a(0, 0, 0, 0.2); + // transform: translateY(5px); + +} + + +.activeSpan{ + background-color: #98eb98; + border-radius: 10px; + font-size: small; + color: #014d01; +} + +.awaitSpan{ + background-color: #b3c5ff; + border-radius: 10px; + font-size: small; + color: #213a8b; +} + +.closedSpan{ + background-color: #e3c096; + border-radius: 10px; + font-size: small; + color: #4d2a00; +} +.searchInputSpan{ + background-color: #ececec; + border-radius: 45px; + width: 38vh; + height: 47px; + +} + +.backImage{ + // position: fixed; + // left: 0; + // bottom: 0; + width: 100%; + // height:85%; + background-image: url('/assets/img/houstone_line1.jpg'); + background-size: cover; + background-repeat: no-repeat; + background-position: center; + padding: 10px; + z-index: 1; +} \ No newline at end of file diff --git a/src/app/_modules/auth/auth.module.ts b/src/app/_modules/auth/auth.module.ts index 66eab5b..8518d2e 100644 --- a/src/app/_modules/auth/auth.module.ts +++ b/src/app/_modules/auth/auth.module.ts @@ -50,7 +50,8 @@ import { MatSortModule } from '@angular/material/sort'; MatFormFieldModule, MatTableModule, MatPaginatorModule, - MatSortModule + MatSortModule, + ReactiveFormsModule.withConfig({warnOnNgModelWithFormControl: 'never'}) ] }) export class AuthModule { } diff --git a/src/app/_modules/auth/forgot-password/forgot-password.component.html b/src/app/_modules/auth/forgot-password/forgot-password.component.html index 30ab27d..9e0bd30 100644 --- a/src/app/_modules/auth/forgot-password/forgot-password.component.html +++ b/src/app/_modules/auth/forgot-password/forgot-password.component.html @@ -1,25 +1,58 @@ +
+
+
-
- +
+ + +
+ + + {{ 'forgotYourPass' | translate }}
+ +
+ +
+ + +
+ +
+ +
+ +
+
+ - {{ 'resetPassword' | translate | uppercase }} +
+ +
+ {{ 'forgotYourPass' | translate }} + +
+ +
+

- +

@@ -31,18 +64,18 @@

- - -
@@ -64,17 +97,21 @@

-
+ +
-
\ No newline at end of file +
+ +
\ No newline at end of file diff --git a/src/app/_modules/auth/forgot-password/forgot-password.component.scss b/src/app/_modules/auth/forgot-password/forgot-password.component.scss index 4f2714c..a0f11be 100644 --- a/src/app/_modules/auth/forgot-password/forgot-password.component.scss +++ b/src/app/_modules/auth/forgot-password/forgot-password.component.scss @@ -42,4 +42,109 @@ display: flex; justify-content: center; align-items: center; - } \ No newline at end of file + } + + .sendOTP{ + border: 1px solid #295754; + color: #ffffff; + background-color: #295754; + width: 100%; + border-radius: 30px; + height: 35px; + font-family: nucleo; + + } + + .sendOTP:hover{ + background-color: #1c4441; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + } + +.backImg{ + height: 70%; + position: fixed; + left: 0; + bottom: 0; + width: 100%; + background-image: url('/assets/img/houstone_line1.jpg'); + background-size: cover; + background-repeat: no-repeat; + background-position: center; + padding: 10px; + z-index: 1; +} +.mainCard{ + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.4); + border-radius: 10px; + top:-70px; +} + +.resetSpan{ + font-family: texg; + color: #1e3d3b; + font-size: xx-large; + float: center; + margin-top: 15px; + // margin-left: 64px; +} + +.verifyOtpButton{ + border: 1px solid #295754; + color: #ffffff; + background-color: #295754; + width: 54%; + border-radius: 30px; + height: 35px; + font-family: nucleo; +} + +.verifyOtpButton:hover{ + background-color: #1c4441; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); +} + +.resendOtpButton{ + border: 1px solid #295754; + color: #295754; + background-color: #ffffff; + // width: 100%; + border-radius: 30px; + height: 35px; + font-family: nucleo; +} + +.resendOtpButton:hover{ + background-color: #ebebeb; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); +} +.changePassButton{ + border: 1px solid #295754; + color: #ffffff; + background-color: #295754; + width: 100%; + border-radius: 30px; + height: 35px; + font-family: nucleo; +} + + +.changePassButton:hover{ + background-color: #1c4441; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); +} + +.forgotImage{ + background-image: url('/assets/img/forgot.jpg'); + background-size: cover; + background-repeat: no-repeat; + background-position: center; + height: 250px; + width: 250px; +} + +@media screen and(max-width: 767px) { + .resetSpan { + font-size: large; + + } +} \ No newline at end of file diff --git a/src/app/_modules/auth/forgot-password/forgot-password.component.ts b/src/app/_modules/auth/forgot-password/forgot-password.component.ts index 2e6004b..a4fd4d7 100644 --- a/src/app/_modules/auth/forgot-password/forgot-password.component.ts +++ b/src/app/_modules/auth/forgot-password/forgot-password.component.ts @@ -19,6 +19,8 @@ export class ForgotPasswordComponent implements OnInit { user: AuthenticationDto = new AuthenticationDto(); + forgotCard:boolean = false + config = { allowNumbersOnly: true, length: 6, diff --git a/src/app/_modules/auth/login/login.component.html b/src/app/_modules/auth/login/login.component.html index 146031f..66871a0 100644 --- a/src/app/_modules/auth/login/login.component.html +++ b/src/app/_modules/auth/login/login.component.html @@ -34,39 +34,54 @@
-
- +
+
- - {{ 'signIn' | translate | uppercase }} + + {{ 'login.' | translate }} -
+

- + + Email + formControlName="username" [(ngModel)]="user.username" style="width:100%;border-bottom: 0px;">

- - + + Password + + + visibility + + + visibility_off +

-
- {{'forgotPass' | translate}} +
+ +
+ {{'forgotPass' | translate}} +
+
+ Sign up +
+
-
-
@@ -77,9 +92,9 @@
-
+ @@ -89,7 +104,7 @@
- +
+ + \ No newline at end of file diff --git a/src/app/_modules/auth/login/login.component.scss b/src/app/_modules/auth/login/login.component.scss index ca2f0c5..3877d50 100644 --- a/src/app/_modules/auth/login/login.component.scss +++ b/src/app/_modules/auth/login/login.component.scss @@ -17,6 +17,12 @@ display: flex; justify-content: center; margin: 100px 0px; + +} + +.loginCard{ + box-shadow: 0 18px 20px rgba(0, 0, 0,0.2) !important; + border-radius: 17px; } .mat-form-field { @@ -68,4 +74,84 @@ mat-card-content { left: 0; bottom: 0; width: 100%; + // background-color: aqua; + height: 70%; + background-image: url('/assets/img/houstone_line1.jpg'); + background-size: cover; + background-repeat: no-repeat; + background-position: center; + padding: 10px; + z-index: 1; +} + +@media (max-width: 767px) { +.form{ + width: 85% !important; +} +} +.eye-icon{ + cursor: pointer; +} + +.c-wrapper { + position: relative; + z-index: 2; /* Set a higher z-index for the wrapper to overlay it over the footer */ + margin: 0; + /* Add any other styling you want for the wrapper */ +} + +.loginSpan{ + font-family: texg; + color: #1e3d3b; + font-size: xxx-large; + margin-left: 64px; + +} + +.forgotSpan{ + font-size: small; + color: #234442; + text-decoration: auto; + cursor: pointer; + font-family: nucleo; + +} + + + +.signUpButton{ + color: #ffffff; + background-color: #234442; + border-radius: 30px; + font-family: nucleo; + padding: 6px 20px 8px 19px; + cursor: pointer; +} + +.signUpButton:hover{ + background-color: #16312f; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); +} + +.loginButton{ + padding: 0; + border-radius: 16px !important; + height: 35px !important; + // width: 68px !important; + border: 1px solid #16312f; + float: center; + margin-top: 5px; + margin-bottom: 5px; + color: #16312f; + background-color: white; + // height: 37px; + border-radius: 9px; + font-family: nucleo; + width: 100%; + +} + +.loginButton:hover{ + background-color: #ebeaea ; + box-shadow: 0 2px rgb(129, 129, 129)a(0, 0, 0, 0.2); } \ No newline at end of file diff --git a/src/app/_modules/auth/register/register.component.html b/src/app/_modules/auth/register/register.component.html index 4b98617..b804ea6 100644 --- a/src/app/_modules/auth/register/register.component.html +++ b/src/app/_modules/auth/register/register.component.html @@ -1,3 +1,6 @@ + +
+
-
- +
+
- - {{ 'register' | translate | uppercase }} + + {{ 'register' | translate }}
-
+
-
+
+ class="verifyOtpButton">{{ 'generateOtp' | translate }}
@@ -83,7 +86,7 @@
-
@@ -106,11 +109,11 @@
- - {{ 'register' | translate | uppercase }} + + {{ 'register' | translate }} -
+
@@ -144,7 +147,7 @@
- +
@@ -167,4 +170,6 @@
-
--> \ No newline at end of file +
--> + +
\ No newline at end of file diff --git a/src/app/_modules/auth/register/register.component.scss b/src/app/_modules/auth/register/register.component.scss index c511c0a..ecdb5c0 100644 --- a/src/app/_modules/auth/register/register.component.scss +++ b/src/app/_modules/auth/register/register.component.scss @@ -68,4 +68,71 @@ left: 0; bottom: 0; width: 100%; + } + + .backImg{ + height: 70%; + position: fixed; + left: 0; + bottom: 0; + width: 100%; + background-image: url('/assets/img/houstone_line1.jpg'); + background-size: cover; + background-repeat: no-repeat; + background-position: center; + padding: 10px; + z-index: 1; + } + + .registerCard{ + box-shadow: 0 18px 20px rgba(0, 0, 0,0.2) !important; + border-radius: 17px; + } + + .loginSpan{ + font-family: texg; + color: #1e3d3b; + font-size: xxx-large; + margin-left: 16px; + } + + .verifyOtpButton{ + border: 1px solid #295754; + color: #ffffff; + background-color: #295754; + width: 60%; + border-radius: 30px; + height: 35px; + font-family: nucleo; + } + + .verifyOtpButton:hover{ + background-color: #1c4441; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + } + + .saveButton{ + border: 1px solid #295754; + color: #ffffff; + background-color: #295754; + width: 30%; + border-radius: 30px; + height: 35px; + font-family: nucleo; + } + + .saveButton:hover{ + background-color: #1c4441; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + } + + .submitButton{ + border: 1px solid #295754; + color: #234442; + background-color: #ffffff; + width: 50%; + border-radius: 30px; + height: 35px; + font-family: nucleo; + } \ No newline at end of file diff --git a/src/app/_modules/auth/register/register.component.ts b/src/app/_modules/auth/register/register.component.ts index 9639fbd..d1ccd27 100644 --- a/src/app/_modules/auth/register/register.component.ts +++ b/src/app/_modules/auth/register/register.component.ts @@ -38,20 +38,22 @@ export class RegisterComponent implements OnInit { } sendOTP(template) { - if (this.userDetails.email && this._uiService.emailValidation(this.userDetails.email)) { - let body = { email: this.userDetails.email }; - this._masterService.saveAllMasterData(apiUrl.registerOtp, body).then(res => { - this._uiService.toastMessage(this.errorTranslateService.translate("otpSendSuccessfully")); - - this.openDialogbox(template) - },err=>{ - this._uiService.toastMessage((err.error.message) ? err.error.message : this.errorTranslateService.translate('errorInApi')); - - }) - } - else { - this._uiService.toastMessage(this.errorTranslateService.translate("enterAValidEmailID")); - } + this.openDialogbox(template) + + // if (this.userDetails.email && this._uiService.emailValidation(this.userDetails.email)) { + // let body = { email: this.userDetails.email }; + // this._masterService.saveAllMasterData(apiUrl.registerOtp, body).then(res => { + // this._uiService.toastMessage(this.errorTranslateService.translate("otpSendSuccessfully")); + + // this.openDialogbox(template) + // },err=>{ + // this._uiService.toastMessage((err.error.message) ? err.error.message : this.errorTranslateService.translate('errorInApi')); + + // }) + // } + // else { + // this._uiService.toastMessage(this.errorTranslateService.translate("enterAValidEmailID")); + // } } openDialogbox(templateRef) { diff --git a/src/app/_modules/auth/view/view.component.html b/src/app/_modules/auth/view/view.component.html index e45426b..3c51289 100644 --- a/src/app/_modules/auth/view/view.component.html +++ b/src/app/_modules/auth/view/view.component.html @@ -39,11 +39,19 @@ -
+
-

Tender Details

-

+

Tender Details

+
+
+
+
+   +
+
+
+

@@ -52,8 +60,8 @@
- - +
+ @@ -305,66 +313,70 @@ - + + - + - - - - - + + + + + - - - + + + + + - + -
- + - + - - - + + + - - + + - + - + - + + - + - - - - - - - - - + + + + + - - - - + + + + + +
Basic Details
Tenders Documents
Drawings DocumentNotice
Drawings
Document TypeDocument NameDescriptionDownload
{{document.description}}
{{document.documentTypeD.documentType}}{{document.docName}}{{document.description}}
Work Item DocumentsWork Item Documents
Document TypeDocument Name
Document TypeDocument Name Description
{{document.documentTypeD.documentType}}{{document.docName}}{{document.documentTypeD.documentType}}{{document.docName}} {{document.description}}
NoticeDrawings Document
Document TypeDocument NameDescription
{{document.documentTypeD.documentType}}{{document.docName}}{{document.description}}
Drawings
{{document.description}}
@@ -379,7 +391,7 @@ - + Document Type Description Document Format diff --git a/src/app/_modules/auth/view/view.component.scss b/src/app/_modules/auth/view/view.component.scss index 9c09c2d..39dccc0 100644 --- a/src/app/_modules/auth/view/view.component.scss +++ b/src/app/_modules/auth/view/view.component.scss @@ -1,47 +1,204 @@ .container-fluid{ - width: 100%; - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; - top: 10px; - position: relative; - } - .container-fluid2{ - width: 100%; - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; - top: -1px; - position: relative; + width: 100%; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; + top: 10px; + position: relative; +} +.container-fluid2{ + width: 100%; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; + top: -1px; + position: relative; +} + +@media print { + .hide-on-print { + display: none; } +} + + + + +.nav-link:hover { + color: rgb(255, 0, 0); +} +// #zipFile:hover { +// color: rgb(255, 0, 0); +// cursor: pointer; +// } + +// .container-responsive { +// min-height: 100vh; +// position: relative; +// } + +// #footer { +// background-color: #3a8379; +// padding: 20px; +// color: #ffffff; +// position: absolute; +// bottom: 0; +// width: 100%; +// } +// -------------------------------------------------------------------------------------------- +thead{ + // background-color: #5faca1; color: aliceblue; + padding: 5px; + color: #505050; + font-weight: 900; + font-size: medium; + background-color: #f0f0f0; + font-family: nucleo; +} + +mat-table { + padding-top: 10px !important; + // table-layout: fixed; + width: 100%; + display: table; + overflow-x: scroll; - .table td { - word-break: break-word; + .table-headers { + padding: 5px; + color: #505050; + font-weight: 900; + font-size: medium; + background-color: #f0f0f0; + font-family: nucleo; } - .nav-link:hover { - color: rgb(255, 0, 0); + + .table-headers:hover { + background-color: #ececec; + color: #46AC9E; } - #zipFile:hover { - color: rgb(255, 0, 0); - cursor: pointer; + + .table-content { + padding: 5px; + overflow-wrap: inherit; + font-family: nucleo; + } + + .table-column { + width: 100%; + } +} + +.table td { + word-break: break-word; + padding: 5px; + overflow-wrap: inherit; + font-family: nucleo; +} + +.table th { + font-family: texg; + color: #353535; +} + +.tenderHeading{ + font-family: texg; + color: #353535; +} +.printButton { + float: right; + margin-top: 5px; + margin-bottom: 5px; + background-color: white; + color: #424242; + height: 37px; + border-radius: 9px; + font-family: nucleo; + // width: 17%; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + - // .container-responsive { - // min-height: 100vh; - // position: relative; - // } + +} + +.printButton:hover { + background-color: #ececec; + color: #46AC9E; +} + + + +.DownloadZipButton { + float: right; + margin-top: 5px; + margin-bottom: 5px; + background-color: white; + color: #424242; + height: 37px; + border-radius: 9px; + font-family: nucleo; + // width: 17%; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + - // #footer { - // background-color: #3a8379; - // padding: 20px; - // color: #ffffff; - // position: absolute; - // bottom: 0; - // width: 100%; - // } + +} +.DownloadZipButton:hover { + background-color: #ececec; + color: #46AC9E; +} + +.DownloadNoticeButton { + // float: right; + // margin-top: 5px; + // margin-bottom: 5px; + background-color: white; + // color: #424242; + color: #5faca1; + height: 37px; + border-radius: 9px; + font-family: nucleo; + // width: 17%; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); - thead{ - background-color:#48746e; color: aliceblue; + + + +} +.DownloadNoticeButton:hover { + background-color: #ececec; + color: #303030; +} + +@media screen and (max-width: 768px) { + /* Adjust font size for smaller screens */ + .DownloadZipButton { + font-size: 14px; + } +} + +@media screen and (max-width: 480px) { + /* Further adjustments for even smaller screens */ + .DownloadZipButton { + font-size: 12px; + } +} + + @media print { + + + .hide-on-print { + display: none; + } + + .some-element { + border: 1px solid black !important; + page-break-inside: avoid; /* Prevent element from breaking across pages */ + } + } + .some-element { + border: 1px solid black !important; + page-break-inside: avoid; /* Prevent element from breaking across pages */ } \ No newline at end of file diff --git a/src/app/_modules/auth/view/view.component.ts b/src/app/_modules/auth/view/view.component.ts index a10ffc9..26047d9 100644 --- a/src/app/_modules/auth/view/view.component.ts +++ b/src/app/_modules/auth/view/view.component.ts @@ -5,7 +5,7 @@ import { apiUrl } from 'src/app/_providers/_resources/api-url.properties'; import { ErrorTranslateService } from 'src/app/_providers/_services/error-translate.service'; import { MasterService } from 'src/app/_providers/_services/master.service'; import { UiService } from 'src/app/_providers/_services/ui.service'; -import { environment } from 'src/environments/environment'; +import { environment } from 'src/environments/environment.prod'; @Component({ selector: 'app-view', @@ -44,6 +44,7 @@ getData(){ this.tenderData = res this.tenderDocuments = this.tenderData['tenderDoc'] console.log("data",this.tenderDocuments); + this.filterDataByCategory(); }) } @@ -68,6 +69,10 @@ filterDataByCategory() { window.location.href = 'https://www.thrickodithanamscb.in/index.html#contact'; } + print(): void { + window.print(); + } + DownloadDrawingsZIP(){ const id = this.tenderId; this._masterService.getMasterDatabyId(apiUrl.drawingsDownloadDocs,id).then((res)=>{ @@ -99,13 +104,42 @@ filterDataByCategory() { }) } - DownloadNIT(){ + DownloadNIT(index: number) { const id = this.tenderId; - this._masterService.getMasterDatabyId(apiUrl.noticeDownlaod,id).then((res)=>{ - - }) + console.log(index); + console.log(this.nitItemDocuments[index].docName); + + + this._masterService.getMasterDatabyId(apiUrl.noticeDownlaod, `${this.tenderId}/${this.nitItemDocuments[index].docName}`).then((res) => { + + } , err => { + console.log('res===>', err); + if (err.status == 200) { + console.log('start >>>'); + // window.open(`${environment.apiUrl}/${apiUrl.bankDocs}/${id}`); + let newWindow = window.open(`${environment.apiUrl}/${apiUrl.noticeDownlaod}/${this.tenderId}/${this.nitItemDocuments[index].docName}`); + // setTimeout(() => { + // newWindow.close(); + // }, 10000); + } + if (err.status == 404) { + alert('No Notice Document Found for the selected Tender.'); + } + if (err.status == 500) { + alert(`${err.message}`); + } + else { + //alert(`An error Occured`); + // let newWindow = window.open(`${environment.apiUrl}/${apiUrl.noticeDownlaod}/${id}`); + // setTimeout(() => { + // newWindow.close(); + // }, 100); + } + + }) } + // downloadWITZip() { // console.log('clicked'); diff --git a/src/app/_modules/dashboard/add-tenders/add-tenders.component.html b/src/app/_modules/dashboard/add-tenders/add-tenders.component.html index 61dced4..d561754 100644 --- a/src/app/_modules/dashboard/add-tenders/add-tenders.component.html +++ b/src/app/_modules/dashboard/add-tenders/add-tenders.component.html @@ -3,7 +3,7 @@
-

Tender Details

+

Tender Details

@@ -13,7 +13,7 @@ -

+

@@ -494,7 +494,7 @@

- @@ -649,27 +649,30 @@ -

+

+ + + + + + - - - + Notice + + @@ -678,31 +681,30 @@ - + @@ -763,80 +764,77 @@ + - - - + - - - - + + + - + - - - - - - - - + + + - - - + + + - + - @@ -976,10 +977,10 @@
- - diff --git a/src/app/_modules/dashboard/add-tenders/add-tenders.component.scss b/src/app/_modules/dashboard/add-tenders/add-tenders.component.scss index 4dd9228..ec066f1 100644 --- a/src/app/_modules/dashboard/add-tenders/add-tenders.component.scss +++ b/src/app/_modules/dashboard/add-tenders/add-tenders.component.scss @@ -18,9 +18,15 @@ } ::ng-deep .custom-tab-group .mat-tab-label { - color: rgb(0, 0, 0); + // color: rgb(0, 0, 0); text-transform: none; - min-width: 120px; /* adjust the value as per your requirements */ + min-width: 120px; + padding: 5px; + color: #505050; + font-weight: 700; + font-size: small; + background-color: #f0f0f0; + font-family: nucleo; } @@ -42,4 +48,76 @@ .element-with-tooltip { cursor: pointer; /* Set the cursor style to pointer for the element */ - } \ No newline at end of file + } + + .tenderHeading{ + font-family: texg; + //color: #353535; + } + + + label + { + font-family: texg; + color: #262627; + +} +input{ + overflow-wrap: inherit; + font-family: nucleo; +} +.form-control{ + font-family: nucleo; +} +// .input-style{ +// font-family: nucleo; +// } + + + +.Buttons { + float: right; + margin-top: 5px; + margin-bottom: 5px; + background-color: white; + color: #424242; + height: 37px; + border-radius: 9px; + font-family: nucleo; + // width: 17%; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + + + +} + +th,td{ + font-family: nucleo; +} + +.Buttons:hover { + background-color: #ececec; + color: #46AC9E; +} + +.ButtonSubmit { + float: right; + margin-top: 5px; + margin-bottom: 5px; + background-color: #ececec; + color: #46AC9E; + + height: 37px; + border-radius: 9px; + font-family: nucleo; + // width: 17%; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + + + +} + +.ButtonSubmit:hover { + background-color: #46AC9E; + color: #ececec; +} \ No newline at end of file diff --git a/src/app/_modules/dashboard/add-tenders/add-tenders.component.ts b/src/app/_modules/dashboard/add-tenders/add-tenders.component.ts index 8fab911..ac3d40a 100644 --- a/src/app/_modules/dashboard/add-tenders/add-tenders.component.ts +++ b/src/app/_modules/dashboard/add-tenders/add-tenders.component.ts @@ -53,6 +53,9 @@ export class AddTendersComponent implements OnInit { newDRWROW: boolean = false; newCvrROW: boolean = false; id: number; + disableUploadButton: boolean; + userID: string; + isFileNameDuplicate: boolean; constructor(private router: Router, private _masterService : MasterService, @@ -64,6 +67,7 @@ export class AddTendersComponent implements OnInit { { this.seculevel = localStorage.getItem('seculevel') + this.userID = localStorage.getItem('userId') this.tenderData = new TenderDetailDto(); this.tenderID = +this.route.snapshot.paramMap.get('id'); this.getData() @@ -120,7 +124,14 @@ export class AddTendersComponent implements OnInit { console.log("this.workItemDocuments===",this.workItemDocuments); } + + // if(res.fileName.length > 0){ + // this.disableUploadButton = false + // }else{ + // this.disableUploadButton = true + // } }) + } @@ -214,6 +225,7 @@ export class AddTendersComponent implements OnInit { let newRow = Object.assign({}, lastRow); newRow.documentCategory = 'NIT' newRow.crud = 'I' + newRow.userId = this.userID this.nitDocuments.push(newRow); console.log('===this.nitDocuments===',this.nitDocuments); } @@ -228,6 +240,7 @@ export class AddTendersComponent implements OnInit { let newRow = Object.assign({}, lastRow); newRow.documentCategory = 'D' newRow.crud = 'I' + newRow.userId = this.userID this.drawingsDocuments.push(newRow); console.log('===this.drawingsDocuments===',this.drawingsDocuments); @@ -243,8 +256,11 @@ export class AddTendersComponent implements OnInit { const newRow = Object.assign({}, lastRow); newRow.documentCategory = 'WID' newRow.crud = 'I' + newRow.userId = this.userID this.workItemDocuments.push(newRow); this.newDRWROW = true + console.log(this.workItemDocuments); + } @@ -262,6 +278,13 @@ export class AddTendersComponent implements OnInit { UploadFiles(event,i,type){ + + if(this.workItemDocuments[i].file){ + this._ui.toastMessage(this.errorTranslateService.translate("Pleasedeletetheexistingfile"),4000,false); + + + }else{ + this.selectedFiles = event.target.files; let file = event.target.files[0] const fd = new FormData(); @@ -286,41 +309,87 @@ export class AddTendersComponent implements OnInit { this.workItemDocuments[i].file = res.fileName this.workItemDocuments[i].documentSize =res.fileSizeKB; } - }) + })} } - UploadNoticeFiles(event,i,type){ - this.selectedFiles = event.target.files; - let file = event.target.files[0] - const fd = new FormData(); - fd.append('file', file); - - - if(file && this.id) - this._masterService.postMasterData(apiUrl.nitUploadDoc,fd,this.id).then((res)=>{ - console.log("res1===",res.fileName); - console.log("res2===",res.fileSizeKB); - console.log('======= this.tenderData.tenderDocs==========', this.tenderData.tenderDoc); - - - if(type == 'NIT'){ - this.nitDocuments[i].docName = res.fileName - this.nitDocuments[i].file = res.fileName - this.nitDocuments[i].documentSize =res.fileSizeKB; - } - // else{ +// UploadNoticeFiles(event,i,type){ + +// if(this.nitDocuments[i].file){ +// this._ui.toastMessage(this.errorTranslateService.translate("Pleasedeletetheexistingfile"),4000,false); +// }else{ + +// for (let j = 0; j < this.nitDocuments.length; j++) { + +// this.selectedFiles = event.target.files; +// let file = event.target.files[0] +// const fd = new FormData(); +// fd.append('file', file); + +// if (this.nitDocuments[j].docName === file.name) { +// console.log("this.nitDocuments[j].docName",this.nitDocuments[j].docName); + +// this._ui.toastMessage(this.errorTranslateService.translate("documentnamecantbesame"),4000,false); +// file.name = ""; +// } +// if(file && this.id){ +// this._masterService.postMasterData(apiUrl.nitUploadDoc,fd,this.id).then((res)=>{ + - // this.workItemDocuments[i].docName = res.fileName - // this.workItemDocuments[i].file = res.fileName - // this.workItemDocuments[i].documentSize =res.fileSizeKB; - // } +// if(type == 'NIT'){ +// this.nitDocuments[i].docName = res.fileName +// this.nitDocuments[i].file = res.fileName +// this.nitDocuments[i].documentSize =res.fileSizeKB; +// } +// })} + +// } +// } +// } + +UploadNoticeFiles(event: any, i: number, type: string) { + if (this.nitDocuments[i].file) { + this._ui.toastMessage(this.errorTranslateService.translate("Pleasedeletetheexistingfile"), 4000, false); + return; + } + + let file: File | undefined = event.target.files[0]; + if (!file) { + return; + } + + const isFileNameDuplicate = this.nitDocuments.some((doc) => doc.docName === file!.name); + if (isFileNameDuplicate) { + this._ui.toastMessage(this.errorTranslateService.translate("documentnamecantbesame"), 4000, false); + return; + } + + const fd = new FormData(); + fd.append('file', file, file.name); + if (file && this.id) { + this._masterService.postMasterData(apiUrl.nitUploadDoc, fd, this.id) + .then((res) => { + if(type == 'NIT'){ + this.nitDocuments[i].docName = res.fileName + this.nitDocuments[i].file = res.fileName + this.nitDocuments[i].documentSize =res.fileSizeKB; + } + }) - - - } + .catch((error) => { + + }); + } +} + UploadDrawingFiles(event,i){ + + if(this.drawingsDocuments[i].file){ + this._ui.toastMessage(this.errorTranslateService.translate("Pleasedeletetheexistingfile"),4000,false); + + + }else{ this.selectedFiles = event.target.files; @@ -335,7 +404,7 @@ export class AddTendersComponent implements OnInit { this.drawingsDocuments[i].file = res.fileName; this.drawingsDocuments[i].documentSize =res.fileSizeKB; - }) + })} } @@ -364,7 +433,9 @@ export class AddTendersComponent implements OnInit { deleteCoverRow(id, index: number){ let removeRow = Object.assign({}, (this.coverDocs).splice(index, 1)[0]); + // removeRow.crud = 'D'; this.tenderData.covers[index].crud = 'D'; + } @@ -567,13 +638,14 @@ export class AddTendersComponent implements OnInit { else if( this.tenderData.bidSubEndDate == null || this.tenderData.bidSubEndDate == undefined){ this._ui.toastMessage(this.errorTranslateService.translate("bidSubmissionEndDateCantBeBlank"),2000,true); } + else if (this.tenderData.bidSubEndDate && this.tenderData.bidOpenDate && this.tenderData.bidSubEndDate > this.tenderData.bidOpenDate) { + this._ui.toastMessage(this.errorTranslateService.translate("bidSubmissionEndDateCantBeGreaterThanbidOpeningDate"), 2000, true); + } + else if( this.tenderData.bidOpenDate == null || this.tenderData.bidOpenDate == undefined){ this._ui.toastMessage(this.errorTranslateService.translate("bidOpeningDateCantBeBlank"),2000,true); } - - - else this.nextTab() } @@ -659,7 +731,6 @@ return true } if(this.RequiredDocumentsPreCheck() ){ - // this.tenderData.covers = this.coverDocs this.nextTab() } @@ -672,6 +743,8 @@ return true TendersDocuments(){ this.tenderData.id =this.id this.tenderData.crud = 'I' + this.tenderData.covers = this.coverDocs + if(this.tenderDocumnetsPreCheck() ) if(!this.newDRWROW){ @@ -731,9 +804,10 @@ return true return } - this._masterService.saveAllMasterData(apiUrl.AllTenderData,this.tenderData).then((res)=>{ + this._masterService.saveMasterData(apiUrl.AllTenderData,this.tenderData).then((res)=>{ console.log('successssssssss========',res); this.id = res['id'] + this.tenderData = res console.log('this.id========',this.id); if(res){ diff --git a/src/app/_modules/dashboard/dashboard.component.html b/src/app/_modules/dashboard/dashboard.component.html index e5d6dfc..81f7738 100644 --- a/src/app/_modules/dashboard/dashboard.component.html +++ b/src/app/_modules/dashboard/dashboard.component.html @@ -46,13 +46,19 @@
+ +
+
- +
+
+
- +


@@ -109,38 +114,32 @@ class="table"> -
- - - --> + + + + + + + + - - @@ -195,11 +208,12 @@ @@ -211,9 +225,9 @@
- Drawing Document - - +
Upload FilesDescription
- {{drawingsDocuments[i].file}} + *ngIf="nitDocuments[i].file; else assetImageLabel"> + {{nitDocuments[i].file}} {{ 'assetImagePath' | translate }} - - @@ -717,23 +719,23 @@ style="height: 15px;margin-top: -10px;width:90%;"> Document Type Select Document Type {{documentType.documentType}} @@ -741,11 +743,10 @@
@@ -753,8 +754,8 @@
- +
- Notice - + Work Item Documents
Upload - FilesDocument - TypeDescription - + Upload FilesDocument TypeDescription
+ style="height: 15px;margin-top: -10px;width: 90%;"> - {{nitDocuments[i].file}} + *ngIf="workItemDocuments[i].file; else assetImageLabel"> + {{workItemDocuments[i].file}} {{ 'assetImagePath' | translate }} - - -
+ Document Type Select Document Type {{documentType.documentType}} @@ -844,10 +842,11 @@
@@ -855,87 +854,94 @@
- + + +    +
- Work Item Documents + + + Drawing Document + +
- Upload FilesDocument TypeDescriptionUpload + FilesDocument + TypeDescription +
+ style="height: 15px;margin-top: -10px;width:90%;"> - {{workItemDocuments[i].file}} + *ngIf="drawingsDocuments[i].file; else assetImageLabel"> + {{drawingsDocuments[i].file}} {{ 'assetImagePath' | translate }} - -
+ Document Type Select Document Type {{documentType.documentType}} @@ -943,11 +949,11 @@
@@ -955,13 +961,8 @@
- - -    - +
+ - + {{ 'slno' | translate }} + {{i+1}} + {{ 'title' | translate }} - sort + {{element?.title}} @@ -150,7 +149,7 @@ {{ 'publishedDate' | translate }} - sort + {{element?.publishDate| date:"YYYY-MM-dd"}} @@ -161,9 +160,9 @@ - + {{ 'bidOpenDate' | translate }} - sort + {{element?.bidOpenDate| date:"YYYY-MM-dd"}} @@ -173,17 +172,31 @@ + {{ 'status' | translate }} + +    {{element?.hide}}    +    {{element?.hide}}    +    {{element?.hide}}    + + + {{ 'view' | translate }} - - - diff --git a/src/app/_modules/dashboard/dashboard.component.scss b/src/app/_modules/dashboard/dashboard.component.scss index e8c7b3f..bc6d761 100644 --- a/src/app/_modules/dashboard/dashboard.component.scss +++ b/src/app/_modules/dashboard/dashboard.component.scss @@ -66,7 +66,7 @@ td { display: flex; flex-wrap: wrap; justify-content: space-between; - border: 1px solid #e3e3e3; + // border: 1px solid #e3e3e3; width: 100%; margin: auto; padding: auto; @@ -106,6 +106,8 @@ mat-card { .top-right-float>button { margin: 5px; height: 40px; + margin-left: -74px; + margin-top: 7px; } mat-table { @@ -113,12 +115,15 @@ mat-table { width: 100%; display: table; overflow-x: scroll; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); .table-headers { padding: 5px; - color: #ffffff; + color: #353535; font-weight: 900; font-size: medium; - background-color: #46AC9E; + background-color: #ececec; + font-family:nucleo; + } .table-headers:hover { @@ -129,6 +134,8 @@ mat-table { .table-content { padding: 5px; overflow-wrap: inherit; + font-family:nucleo; + } .table-column { @@ -214,9 +221,19 @@ input { // } -@media (max-width: 767px) { +@media screen and(max-width: 767px) { .card { - min-width: 600px; + min-width: 900px; + } + + .top-bar { + flex-direction: column; + align-items: center; + } + + .top-left-float, + .top-right-float { + min-width: 100%; } } @@ -226,5 +243,113 @@ input { } .mat-row:nth-child(odd){ - background-color: rgb(241, 241, 241); + background-color: rgb(248, 248, 248); +} +.viewButton{ + padding: 0; + border-radius: 16px !important; + height: 32px !important; + // width: 68px !important; + + float: center; + // margin-top: 5px; + // margin-bottom: 5px; + color: #424242; + background-color: white; + // height: 37px; + border-radius: 9px; + font-family: nucleo; + width: 8%; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + // margin-right: 5px; +} + +.reportButton{ + padding: 0; + // border-radius: 16px !important; + height: 32px !important; + // width: 68px !important; + + float: center; + // margin-top: 5px; + // margin-bottom: 5px; + color: #424242; + // background-color: white; + // height: 37px; + // border-radius: 9px; + font-family: nucleo; + width: 8%; + // box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + // margin-right: 5px; +} +.editButton { + + box-shadow: 0 2px 2px rgba(0, 0, 0, 0.1); + // transform: translateY(5px); + +} + +.editButton:hover { + box-shadow: 0 2px 2px rgba(0, 0, 0, 0.1); + /* You can adjust the shadow values to your preference */ +} + +.addButton{ + padding: 0; + border-radius: 16px !important; + height: 35px !important; + // width: 68px !important; + + float: center; + margin-top: 5px; + margin-bottom: 5px; + color: #424242; + background-color: white; + // height: 37px; + border-radius: 9px; + font-family: nucleo; + width: 11%; + // box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + // margin-right: 5px; +} + +.addButton:hover{ + + background-color: #ebeaea ; + box-shadow: 0 2px rgb(129, 129, 129)a(0, 0, 0, 0.2); + // transform: translateY(5px); + +} + +.activeSpan{ + background-color: #98eb98; + border-radius: 10px; + font-size: small; + color: #014d01; +} + +.awaitSpan{ + background-color: #b3c5ff; + border-radius: 10px; + font-size: small; + color: #213a8b; +} + +.closedSpan{ + background-color: #e3c096; + border-radius: 10px; + font-size: small; + color: #4d2a00; +} +.searchInputSpan{ + background-color: #ececec; + border-radius: 45px; + width: 38vh; + height: 47px; + } +.home{ + font-family: texg; + font-weight: 800; + color:#4c4c4c; +} \ No newline at end of file diff --git a/src/app/_modules/dashboard/dashboard.component.ts b/src/app/_modules/dashboard/dashboard.component.ts index 7552ca7..093b2db 100644 --- a/src/app/_modules/dashboard/dashboard.component.ts +++ b/src/app/_modules/dashboard/dashboard.component.ts @@ -1,5 +1,5 @@ import { Component, OnInit, EventEmitter, Input, Output,ViewChild } from '@angular/core'; -import { Router } from '@angular/router'; +import { ActivatedRoute, Router } from '@angular/router'; import { IgenMenuDto } from 'src/app/_dto/igenMenu.dto'; import { MenuFormatDto } from 'src/app/_dto/menu-format.dto'; import { apiUrl } from 'src/app/_providers/_resources/api-url.properties'; @@ -55,11 +55,15 @@ export class DashboardComponent implements OnInit { enableDownload: boolean = true + amountPaid: boolean = false; + @ViewChild('paginator') paginator: MatPaginator; @ViewChild(MatSort, { static: false }) sort: MatSort; noData: boolean; + userId: string; + tenderId: number; constructor( private _menuService: MenuService, @@ -69,16 +73,19 @@ export class DashboardComponent implements OnInit { private authenticationService: AuthService, private _masterService: MasterService, private errorService:ErrorTranslateService, - private datePipe: DatePipe + private datePipe: DatePipe, + private route: ActivatedRoute, ) { // this.user$ = this.getUser(); this.seculevel = localStorage.getItem('seculevel') console.log('=====level====',this.seculevel); + this.userId = localStorage.getItem('userId'); + this.tenderId = +this.route.snapshot.paramMap.get('id'); // this.emails$ = this.emailService.loadEmails(); // this.getSchoolLogo(); if(this.seculevel == 'B'){ - this.displayedColumns = ['actions','title','publishedDate','bidOpenDate','view','report']; + this.displayedColumns = ['actions','title','publishedDate','bidOpenDate','status','view','report']; } else{ this.displayedColumns = ['slno','title','publishedDate','bidOpenDate','view','upload']; @@ -98,6 +105,7 @@ export class DashboardComponent implements OnInit { this.enableDownload = true; this.getData(); + this.paymentCheck() // await this._ui.userValidation() // this.loading = true; @@ -125,10 +133,10 @@ export class DashboardComponent implements OnInit { // console.log('1111111 ',element.bidSubStartDate); // console.log('2222222 ',element.bidSubEndDate); - element.hide = false + element.hide = 'Active' } else - element.hide = true + element.hide = 'Closed' } this.dataCopy = res; @@ -143,9 +151,32 @@ export class DashboardComponent implements OnInit { }) else this._masterService.getMasterData(apiUrl.adminTenderView).then((res) =>{ - console.log("tenderData=2=",res); this.tenderData = res; + + for(let element of res){ + + const publishDate: Date = new Date(element.publishDate); + const bidSubEndDate: Date = new Date(element.bidSubEndDate); + const bidOpenDate: Date = new Date(element.bidOpenDate); + + if(newDate >= bidOpenDate){ + element.reportHide = 'false' + } + + if(newDate >= publishDate && newDate <= bidOpenDate){ + // console.log('1111111 ',element.bidSubStartDate); + // console.log('2222222 ',element.bidSubEndDate); + + element.hide = 'Active' + } + else if(newDate < publishDate){ + element.hide = 'Await' + } + else + element.hide = 'Closed' + + } this.dataCopy = res; this.pageLength = this.tenderData.length; this.dataSource = new MatTableDataSource(this.tenderData); @@ -153,6 +184,8 @@ export class DashboardComponent implements OnInit { this.dataSource.paginator = this.paginator; this.noData = (this.tenderData && this.tenderData.length == 0) ? true : false; this.loading = false; + console.log("tenderData=2=",res); + },err=>{ console.error(err) }) @@ -198,6 +231,8 @@ export class DashboardComponent implements OnInit { return compare(a.publishDate, b.publishDate, isAsc); case 'bidOpenDate': return compare(a.bidOpenDate, b.bidOpenDate, isAsc); + case 'status': + return compare(a.hide, b.hide, isAsc); default: return 0; } @@ -301,6 +336,17 @@ export class DashboardComponent implements OnInit { } + paymentCheck(){ + this._masterService.getMasterDatabyId(apiUrl.paymentCheck, `${this.userId}/${this.tenderId}`).then(res => { + console.log('pay res=>', res); + + if (res.length >0 && res[0].transId && res[0].transId != null && res[0].transId != undefined) { + this.amountPaid = true + } + + }) + } + signIn(){ this.router.navigate(['/login']); } @@ -321,6 +367,12 @@ export class DashboardComponent implements OnInit { } goToUpload(tenderId){ + this.paymentCheck() + + if(!this.amountPaid){ + this._ui.toastMessage(this.errorService.translate("pleasePayTheAmountForUpload"), 2000); + + }else this.router.navigate(['/tender-upload',tenderId]); } goToEdit(tenderId){ @@ -329,6 +381,7 @@ export class DashboardComponent implements OnInit { Cancel(){ } + // public getUser(): Observable { @@ -345,8 +398,15 @@ export class DashboardComponent implements OnInit { goToReport(id){ + + this.navigateTo(`bid-final-report/${id}`) + } + + + + } function compare(a: any, b: any, isAsc: boolean): number { return (a < b ? -1 : 1) * (isAsc ? 1 : -1); diff --git a/src/app/_modules/dashboard/dialog/dialog.component.ts b/src/app/_modules/dashboard/dialog/dialog.component.ts index 58e0104..5a80847 100644 --- a/src/app/_modules/dashboard/dialog/dialog.component.ts +++ b/src/app/_modules/dashboard/dialog/dialog.component.ts @@ -11,8 +11,11 @@ import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; - - + + Close + + + `, styleUrls: ['./dialog.component.scss'] diff --git a/src/app/_modules/dashboard/home-upload/home-upload.component.html b/src/app/_modules/dashboard/home-upload/home-upload.component.html index baa85bd..2732119 100644 --- a/src/app/_modules/dashboard/home-upload/home-upload.component.html +++ b/src/app/_modules/dashboard/home-upload/home-upload.component.html @@ -52,9 +52,11 @@
+ + - Bid Final Amount - + Bid Final Amount + @@ -65,8 +67,8 @@ -
{{cover?.Description}} -
(uploading file should be in {{cover?.fileFormatD?.fileFormat}} format) +
{{cover?.Description}} +
({{cover?.fileFormatD?.fileFormat}} format)
@@ -135,13 +137,16 @@ I confirm that all the information I have provided in connection with this tender is accurate, complete, and valid to the best of my knowledge. I also understand that any misrepresentation or omission of relevant information may result in the rejection of my application/participation or the termination of any subsequent contract awarded to me.
--> -
- -
- I agree to the Terms and Conditions -
-
  -
*View Terms and Conditions
+
+ + + + I agree to the Terms and Conditions +
diff --git a/src/app/_modules/dashboard/home-upload/home-upload.component.scss b/src/app/_modules/dashboard/home-upload/home-upload.component.scss index 6bbca16..caa35a7 100644 --- a/src/app/_modules/dashboard/home-upload/home-upload.component.scss +++ b/src/app/_modules/dashboard/home-upload/home-upload.component.scss @@ -30,6 +30,10 @@ .resp{ min-height: 460px; } + + #customers td, #customers th { + padding-right: 2px; + } } .checkbox-container { @@ -43,3 +47,24 @@ font-family: 'Arial', sans-serif; font-size: 16px; } +::ng-deep .mat-checkbox-ripple .mat-ripple-element { + background-color: #5FACA1 !important; + +} + +::ng-deep .mat-checkbox-checked.mat-accent .mat-checkbox-background { + background-color: #5FACA1 !important; +} + +::ng-deep .mat-checkbox-indeterminate.mat-accent .mat-checkbox-background { + background-color: #5FACA1 !important; +} + + +input[type=number]::-webkit-inner-spin-button, +input[type=number]::-webkit-outer-spin-button { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + margin: 0; +} \ No newline at end of file diff --git a/src/app/_modules/dashboard/home-upload/home-upload.component.ts b/src/app/_modules/dashboard/home-upload/home-upload.component.ts index 7d2fc86..2053c87 100644 --- a/src/app/_modules/dashboard/home-upload/home-upload.component.ts +++ b/src/app/_modules/dashboard/home-upload/home-upload.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit,ViewChild,ElementRef,AfterViewInit, } from '@angular/core'; import { FormGroup } from '@angular/forms'; import { MatDialog } from '@angular/material/dialog'; import { ActivatedRoute, Router } from '@angular/router'; @@ -10,6 +10,7 @@ import { MasterService } from 'src/app/_providers/_services/master.service'; import { UiService } from 'src/app/_providers/_services/ui.service'; import Swal from 'sweetalert2' import { DialogComponent } from '../dialog/dialog.component'; +import { DatePipe } from '@angular/common'; @Component({ selector: 'app-home-upload', @@ -35,9 +36,10 @@ export class HomeUploadComponent implements OnInit { bidAmount:number; agreeToTerms1: boolean = false; + agreeToTerms2: boolean = false; - showError: boolean = false; + showError: boolean = false; tenderData: any; @@ -57,17 +59,31 @@ export class HomeUploadComponent implements OnInit { fileFormat: any[] + userEmail: string; + + emailBody: any; + + username: string; + + @ViewChild('bidAmountInput') bidAmountInput: ElementRef; + + amountPaid: boolean = false; + constructor( private router: Router, private route: ActivatedRoute, private _ui: UiService, private _errorTranslate: ErrorTranslateService, private _masterService: MasterService, - public dialog: MatDialog + public dialog: MatDialog, + private datePipe: DatePipe ) { this.secuLevel = localStorage.getItem('seculevel'); this.userId = localStorage.getItem('userId'); this.tenderId = +this.route.snapshot.paramMap.get('id'); + this.userEmail = localStorage.getItem('emailId'); + this.username = localStorage.getItem('username'); + } @@ -78,6 +94,14 @@ export class HomeUploadComponent implements OnInit { this.getData(); this.getFileFormatLov(); + this.paymentCheck(); + + } + + ngAfterViewInit(): void { + setTimeout(() => { + this.bidAmountInput.nativeElement.focus(); + }, 0); } @@ -99,7 +123,16 @@ export class HomeUploadComponent implements OnInit { } + paymentCheck(){ + this._masterService.getMasterDatabyId(apiUrl.paymentCheck, `${this.userId}/${this.tenderId}`).then(res => { + console.log('pay res=>', res); + if (res.length >0 && res[0].transId && res[0].transId != null && res[0].transId != undefined) { + this.amountPaid = true + } + + }) + } getData() { this._masterService.getMasterDatabyId(apiUrl.AllTenderData, this.tenderId).then((res) => { @@ -118,6 +151,19 @@ export class HomeUploadComponent implements OnInit { this.UploadedFile.push(new TenderDocumentDto()); } + console.log('org Date==',this.tenderData.bidOpenDate); + + const dateObj = new Date(this.tenderData.bidOpenDate); + const bidOpenDate = this.datePipe.transform(dateObj, 'MMM d, y, h:mm:ss a'); + this.emailBody = { + custName:this.username, + tenderName:this.tenderData.title, + bidOpenDate:bidOpenDate, + email:this.userEmail + } + + console.log('email===>',this.emailBody); + }) } @@ -130,14 +176,20 @@ export class HomeUploadComponent implements OnInit { } UploadFiles(event, i) { - // console.log('fileFormatId===',this.tenderData.covers[i].fileFormatD.fileFormat); + const newFilename = `${this.tenderData.covers[i].Description.replace(/ /g, '')}${this.tenderData.covers[i].fileFormatD.fileFormat}` + + let fileFormatId = this.fileFormat.filter(element => element.fileFormat == this.tenderData.covers[i].fileFormatD.fileFormat); - + this.selectedFiles = event.target.files; let file = event.target.files[0] const fd = new FormData(); - fd.append('file', file); + + // Create a new File object with the updated filename + const updatedFile = new File([file], newFilename, { type: file.type }); + // const fd = new FormData(); + fd.append('file', updatedFile); if (file && this.tenderId) { this._masterService.postMasterData(apiUrl.userDocUpload + '/' + this.tenderId, fd, this.userId).then(res => { this.tenderData.covers[i].file = res.fileName; @@ -210,19 +262,37 @@ export class HomeUploadComponent implements OnInit { submit() { + + if(!this.amountPaid){ + this._ui.toastMessage(this._errorTranslate.translate("pleasePayTheAmountForUpload"), 2000); + return + } + if(!this.preSave()) return + + + let id ={ tenderId : this.tenderId, userId : this.userId, } + + let body= { bidAmount:this.bidAmount } this._masterService.postMasterData(apiUrl.UploadBidAmount,body,`${this.userId}/${this.tenderId}`).then((res)=>{ console.log(res); - + const body={email:this.userEmail} + this._masterService.saveMasterData(apiUrl.UploadBidAmount,this.emailBody).then(res=>{ + console.log(res); + },err=>{ + console.error(err); + }) + },err=>{ + console.error(err); }) diff --git a/src/app/_modules/dashboard/home-view/home-view.component.html b/src/app/_modules/dashboard/home-view/home-view.component.html index 423775d..004a016 100644 --- a/src/app/_modules/dashboard/home-view/home-view.component.html +++ b/src/app/_modules/dashboard/home-view/home-view.component.html @@ -39,9 +39,18 @@ -
+
-

Tender Details

+

Tender Details

+
+
+
+
+   +
+
+ +

@@ -55,7 +64,7 @@ - + @@ -96,13 +105,15 @@ + +
Basic DetailsBasic Details
- + @@ -118,10 +129,10 @@ - + + + +
Tender Fee DetailsTender Fee Details
Tender Fee Exemption Allowed {{tenderData.tenderFeeExemption}}
@@ -132,7 +143,7 @@ - + @@ -163,7 +174,7 @@
EMD Fee DetailsEMD Fee Details
- + @@ -211,7 +222,7 @@
Critical DatesCritical Dates
- + @@ -295,74 +306,89 @@
Work Item DetailsWork Item Details
- + - - - - - + - - + - - - + + + + + + + + + + + +
- - -
- - + - + - - - + + + - - + + - + - - +
- + + + + + - + + + + + + + + + +
Tenders DocumentsTenders Documents
Drawings Document
Notice
{{document.description}}
Document TypeDocument NameDescriptionDownload
{{document.documentTypeD.documentType}}{{document.docName}}{{document.description}}
Work Item DocumentsWork Item Documents
Document TypeDocument Name
Document TypeDocument Name Description
{{document.documentTypeD.documentType}}{{document.docName}}{{document.documentTypeD.documentType}}{{document.docName}} {{document.description}}
Drawings Document
Description
{{document.description}}
@@ -373,11 +399,11 @@ - + - + @@ -408,7 +434,7 @@
Required Documents DetailsRequired Documents Details
Document Type Description Document Format
- + diff --git a/src/app/_modules/dashboard/home-view/home-view.component.scss b/src/app/_modules/dashboard/home-view/home-view.component.scss index 2c52ce3..485377a 100644 --- a/src/app/_modules/dashboard/home-view/home-view.component.scss +++ b/src/app/_modules/dashboard/home-view/home-view.component.scss @@ -17,16 +17,22 @@ position: relative; } -.table td { - word-break: break-word; +@media print { + .hide-on-print { + display: none; + } } + + + + .nav-link:hover { color: rgb(255, 0, 0); } -#zipFile:hover { - color: rgb(255, 0, 0); - cursor: pointer; -} +// #zipFile:hover { +// color: rgb(255, 0, 0); +// cursor: pointer; +// } // .container-responsive { // min-height: 100vh; @@ -41,7 +47,145 @@ // bottom: 0; // width: 100%; // } - +// -------------------------------------------------------------------------------------------- thead{ - background-color: #5faca1; color: aliceblue; + // background-color: #5faca1; color: aliceblue; + padding: 5px; + color: #505050; + font-weight: 900; + font-size: medium; + background-color: #f0f0f0; + font-family: nucleo; +} + +mat-table { + padding-top: 10px !important; + // table-layout: fixed; + width: 100%; + display: table; + overflow-x: scroll; + + .table-headers { + padding: 5px; + color: #505050; + font-weight: 900; + font-size: medium; + background-color: #f0f0f0; + font-family: nucleo; + } + + .table-headers:hover { + background-color: #ececec; + color: #46AC9E; + } + + .table-content { + padding: 5px; + overflow-wrap: inherit; + font-family: nucleo; + + } + + .table-column { + width: 100%; + } +} + +.table td { + word-break: break-word; + padding: 5px; + overflow-wrap: inherit; + font-family: nucleo; +} + +.table th { + font-family: texg; + color: #353535; +} + +.tenderHeading{ + font-family: texg; + color: #353535; +} +.printButton { + float: right; + margin-top: 5px; + margin-bottom: 5px; + background-color: white; + color: #424242; + height: 37px; + border-radius: 9px; + font-family: nucleo; + // width: 17%; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + + + +} + +.printButton:hover { + background-color: #ececec; + color: #46AC9E; +} + +.payButton:hover { + background-color: #ececec; + color: #46AC9E; +} + + +.DownloadZipButton { + float: right; + margin-top: 5px; + margin-bottom: 5px; + background-color: white; + color: #424242; + height: 37px; + border-radius: 9px; + font-family: nucleo; + // width: 17%; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + + + +} +.DownloadZipButton:hover { + background-color: #ececec; + color: #46AC9E; +} + +.DownloadNoticeButton { + // float: right; + // margin-top: 5px; + // margin-bottom: 5px; + background-color: white; + // color: #424242; + color: #5faca1; + height: 37px; + border-radius: 9px; + font-family: nucleo; + // width: 17%; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + + + + +} +.DownloadNoticeButton:hover { + background-color: #ececec; + color: #303030; +} + +@media screen and (max-width: 768px) { + /* Adjust font size for smaller screens */ + .DownloadZipButton { + font-size: 14px; + } +} + +@media screen and (max-width: 480px) { + /* Further adjustments for even smaller screens */ + .DownloadZipButton { + font-size: 12px; + } } \ No newline at end of file diff --git a/src/app/_modules/dashboard/home-view/home-view.component.ts b/src/app/_modules/dashboard/home-view/home-view.component.ts index 8a55e5c..f2b9d44 100644 --- a/src/app/_modules/dashboard/home-view/home-view.component.ts +++ b/src/app/_modules/dashboard/home-view/home-view.component.ts @@ -8,7 +8,7 @@ import { ErrorTranslateService } from 'src/app/_providers/_services/error-transl import { MasterService } from 'src/app/_providers/_services/master.service'; import { TransactionService } from 'src/app/_providers/_services/transaction.service'; import { UiService } from 'src/app/_providers/_services/ui.service'; -import { environment } from 'src/environments/environment'; +import { environment } from 'src/environments/environment.prod'; @Component({ selector: 'app-home-view', @@ -21,7 +21,7 @@ export class HomeViewComponent implements OnInit { tenderData: any; - nitItemDocuments: any ; + nitItemDocuments: any; workItemDocuments: any; @@ -36,17 +36,28 @@ export class HomeViewComponent implements OnInit { newPaymentRow: any; currentDate = new Date(); + enableDownload: boolean = true + paymentStatus: string; + userId: string; + + amountPaid: boolean = false; + + seculevel: string; + + displayedColumns: string[] = ['field', 'value']; + + constructor( private router: Router, private route: ActivatedRoute, private _masterService: MasterService, private _transactionService: TransactionService, - private _ui:UiService, + private _ui: UiService, private _errorTranslateService: ErrorTranslateService - ) { + ) { this.tenderId = +this.route.snapshot.paramMap.get('id'); this.paymentStatus = this.route.snapshot.paramMap.get('pay'); this.getData() @@ -54,16 +65,19 @@ export class HomeViewComponent implements OnInit { } ngOnInit(): void { this.tenderData = new TenderDetailDto() + this.userId = localStorage.getItem('userId') + this.seculevel = localStorage.getItem('seculevel') - console.log("this.tenderId", this.tenderId); + console.log("this.seculevel", this.seculevel); this.enableDownload = true; - this.getData() + this.getData(); + this.getPaymentData(); } - - + + @@ -72,7 +86,7 @@ export class HomeViewComponent implements OnInit { console.log("tenderData", res); this.tenderData = res this.tenderDocuments = this.tenderData['tenderDoc'] - console.log("data",this.tenderDocuments); + console.log("data", this.tenderDocuments); const saleStartDate = new Date(this.tenderData.saleStartDate); const saleEndDate = new Date(this.tenderData.saleEndDate); @@ -84,15 +98,33 @@ export class HomeViewComponent implements OnInit { this.enableDownload = true; // Disable the button console.log("disabled"); } - + this.filterDataByCategory(); }) } + + getPaymentData() { + this._masterService.getMasterDatabyId(apiUrl.paymentCheck, `${this.userId}/${this.tenderId}`).then(res => { + console.log('pay res=>', res); + + if (res.length >0 && res[0].transId && res[0].transId != null && res[0].transId != undefined) { + this.amountPaid = true + } + // else{ + // this.amountPaid = false + // } + + }) + } + print(): void { + window.print(); + } + filterDataByCategory() { - + this.drawingsDocuments = this.tenderDocuments.filter(doc => doc.documentCategory === 'D'); this.workItemDocuments = this.tenderDocuments.filter(doc => doc.documentCategory === 'WID'); @@ -109,73 +141,105 @@ export class HomeViewComponent implements OnInit { window.location.href = 'https://www.thrickodithanamscb.in/index.html#contact'; } - DownloadDrawingsZIP(){ - - - this.paymentGateway() - const id = this.tenderId; - this._masterService.getMasterDatabyId(apiUrl.drawingsDownloadDocs,id).then((res)=>{ - - }, err => { - console.log('res===>', err); - if (err.status == 200) { - console.log('start >>>'); - // window.open(`${environment.apiUrl}/${apiUrl.bankDocs}/${id}`); - let newWindow = window.open(`${environment.apiUrl}/${apiUrl.drawingsDownloadDocs}/${id}`); - setTimeout(() => { - newWindow.close(); - }, 100); - } - if (err.status == 404) { - alert('No Bank Document Found for the selected Tender.'); - } - if (err.status == 500) { - alert(`${err.message}`); + DownloadDrawingsZIP() { + if (!this.amountPaid && this.seculevel == 'U') { + // Scroll to the "Pay" button + var payButton = document.getElementById("headingBreak"); + if (payButton) { + payButton.scrollIntoView({ behavior: 'smooth', block: 'start' }); } - else { - // alert(`An error Occured`); - // let newWindow = window.open(`${environment.apiUrl}/${apiUrl.bankDocs}/${id}`); - // setTimeout(() => { - // newWindow.close(); - // }, 100); - } - - }) + this._ui.toastMessage(this._errorTranslateService.translate('pleasePayTheAmountForDoc'), 3000); + } + else { + const id = this.tenderId; + this._masterService.getMasterDatabyId(apiUrl.drawingsDownloadDocs, id).then((res) => { + + }, err => { + console.log('res===>', err); + if (err.status == 200) { + console.log('start >>>'); + // window.open(`${environment.apiUrl}/${apiUrl.bankDocs}/${id}`); + let newWindow = window.open(`${environment.apiUrl}/${apiUrl.drawingsDownloadDocs}/${id}`); + setTimeout(() => { + newWindow.close(); + }, 10000); + } + if (err.status == 404) { + alert('No Bank Document Found for the selected Tender.'); + } + if (err.status == 500) { + alert(`${err.message}`); + } + else { + // alert(`An error Occured`); + // let newWindow = window.open(`${environment.apiUrl}/${apiUrl.bankDocs}/${id}`); + // setTimeout(() => { + // newWindow.close(); + // }, 100); + } + + }) + } } - DownloadNIT(){ - const id = this.tenderId; - this._masterService.getMasterDatabyId(apiUrl.noticeDownlaod,id).then((res)=>{ - - // }, err => { - // console.log('res===>', err); - // if (err.status == 200) { - // console.log('start >>>'); - // // window.open(`${environment.apiUrl}/${apiUrl.bankDocs}/${id}`); - // let newWindow = window.open(`${environment.apiUrl}/${apiUrl.noticeDownlaod}/${id}`); - // setTimeout(() => { - // newWindow.close(); - // }, 100); - // } - // if (err.status == 404) { - // alert('No Bank Document Found for the selected Tender.'); - // } - // if (err.status == 500) { - // alert(`${err.message}`); - // } - // else { - // //alert(`An error Occured`); - // // let newWindow = window.open(`${environment.apiUrl}/${apiUrl.bankDocs}/${id}`); - // // setTimeout(() => { - // // newWindow.close(); - // // }, 100); - // } - }) + // DownloadDrawingsZIP() { + // // Your code to download the ZIP file goes here + + // // Scroll to the "Pay" button + // var payButton = document.getElementById("headingBreak"); + // if (payButton) { + // payButton.scrollIntoView({ behavior: 'smooth', block: 'start' }); + // } + // } + DownloadNIT(index: number) { + const id = this.tenderId; + console.log(index); + console.log(this.nitItemDocuments[index].docName); + + + this._masterService.getMasterDatabyId(apiUrl.noticeDownlaod, `${this.tenderId}/${this.nitItemDocuments[index].docName}`).then((res) => { + + } , err => { + console.log('res===>', err); + if (err.status == 200) { + console.log('start >>>'); + // window.open(`${environment.apiUrl}/${apiUrl.bankDocs}/${id}`); + let newWindow = window.open(`${environment.apiUrl}/${apiUrl.noticeDownlaod}/${this.tenderId}/${this.nitItemDocuments[index].docName}`); + // setTimeout(() => { + // newWindow.close(); + // }, 10000); + } + if (err.status == 404) { + alert('No Notice Document Found for the selected Tender.'); + } + if (err.status == 500) { + alert(`${err.message}`); + } + else { + //alert(`An error Occured`); + // let newWindow = window.open(`${environment.apiUrl}/${apiUrl.noticeDownlaod}/${id}`); + // setTimeout(() => { + // newWindow.close(); + // }, 100); + } + + }) } downloadWITZip() { + + if (!this.amountPaid && this.seculevel == 'U') { + // Scroll to the "Pay" button + var payButton = document.getElementById("headingBreak"); + if (payButton) { + payButton.scrollIntoView({ behavior: 'smooth', block: 'start' }); + } + this._ui.toastMessage(this._errorTranslateService.translate('pleasePayTheAmountForDoc'), 3000); + + } + else { console.log('clicked'); const id = this.tenderId; // let newWindow = window.open(`${environment.apiUrl}/${apiUrl.bankDocs}/${id}`); @@ -211,11 +275,12 @@ export class HomeViewComponent implements OnInit { }) // window.open('http://192.168.1.112:3500/api/v1/file-upload/Bank-Documents-Arc/'+id); - + } } async paymentGateway() { + // if(this.seculevel != 'B'){ this.paymentDetails = new PurchaseDto(); this.paymentDetails.application = this.tenderId; this.paymentDetails.mobile = localStorage.getItem('mobile') @@ -226,10 +291,10 @@ export class HomeViewComponent implements OnInit { // this.paymentDetails.email=this.issueApplicationData.motherEmail // console.log('this.newPaymentRow.paymentMethod ====',this.newPaymentRow); - // let paymentMethod = this.paymentMethodLovData.find(x=> x.id==this.newPaymentRow.paymentMethod) - - console.log('this.paymentDetails===',this.paymentDetails); - + // let paymentMethod = this.paymentMethodLovData.find(x=> x.id==this.newPaymentRow.paymentMethod) + + console.log('this.paymentDetails===', this.paymentDetails); + this._transactionService.createPayment(this.paymentDetails).then( res => { this.onSuccessPayment(res); @@ -239,8 +304,8 @@ export class HomeViewComponent implements OnInit { console.log("==er====", err); } ); - - + // } + } onSuccessPayment(response) { diff --git a/src/app/_modules/report/bid-final-report/bid-final-report.component.html b/src/app/_modules/report/bid-final-report/bid-final-report.component.html index 57a3dd5..c243780 100644 --- a/src/app/_modules/report/bid-final-report/bid-final-report.component.html +++ b/src/app/_modules/report/bid-final-report/bid-final-report.component.html @@ -1,106 +1,232 @@ - + -
-
+ +
+ +
--> + +
+ + + + +
+ +
-
+ + + + + + + +
+ + + +
+
+

Bid Final Report

+
+ +
+

Tender Information:

+
+ + +
+
+ + {{'tender'|translate}} : + {{headerData?.title}} + +
+
+ + {{'publishedDate'|translate}} : + {{headerData?.publishDate | date: 'MMM d, y, h:mm:ss a'}} + +
+
+ + + +
+
+ + {{'tenderId'|translate}} : + {{tenderInputId}} + +
+
+ + {{'bidOpenDate'|translate}} : + {{headerData?.bidOpenDate | date: 'MMM d, y, h:mm:ss a'}} + +
+
+ +
+
+

Bid Summary:

+
+
+
Tender InvitingTender Inviting
- + + - - - + - + + - - - - + - - + + + + + + + + + - - - - - - - - + - - - - - + - - - + - - - - + + -
+
- {{'slNo'|translate}}. + {{'slNo'|translate}}
+ {{i+1}} +
{{'name'|translate}}
+ {{element?.userName}} +
{{'admissionNo'|translate}}
+ {{element.rollNo }} +
{{'mobileNumber'|translate}}
+ {{element?.mobileNumber}} +
{{'emailId'|translate}}
+ {{element?.email}} +
{{'totalBidAmount'|translate}}
+ {{element?.finalBidAmt}} +
{{'documents'|translate}}
- + + + +
+ + + + + + + + + + +
+
+ {{captchaText}} +
+
+
+ Type the word Above : +
+ +
+ + Text + + +
+ +
+
+
+ +
+
+ refresh +
+ + +
+
+
+ Captcha Not Matching
- \ No newline at end of file +
\ No newline at end of file diff --git a/src/app/_modules/report/bid-final-report/bid-final-report.component.scss b/src/app/_modules/report/bid-final-report/bid-final-report.component.scss index 387b13d..47a85f6 100644 --- a/src/app/_modules/report/bid-final-report/bid-final-report.component.scss +++ b/src/app/_modules/report/bid-final-report/bid-final-report.component.scss @@ -1,125 +1,396 @@ -h4 { - width: 100%; - text-align: center; - } - - .header { - padding: 20px; - width: 100%; - min-width: 350px; - } - - .header>h6>a { - text-decoration: none; - color: #262627; +// .header { +// margin-left: 4%; +// margin-top: 20px; +// } + +// .header>h6{ +// a { +// text-decoration: none; +// color: #262627; +// } + +// a:hover { +// text-decoration: underline; +// cursor: pointer; +// } +// } + +// mat-card{ +// min-width: 180px ; +// // max-width: 20vw; +// height: 200px; +// display: inline-block; +// } + +// mat-card:hover{ +// cursor: pointer; +// } + + +// ----------------------------------------------------------------------------------- + + + +.nav-link:hover { + color: red; +} + + +th, +td { + padding: 10px; + // border: 1px solid #ccc; + word-wrap: break-word; + white-space: normal; + +} + +.h2 { + font-family: sans-serif; + font-size: 26px; + font-weight: 500; +} + + +.table td { + word-break: break-word; +} + +.table-break-word { + word-break: break-word; +} + + + +.top-bar { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + border: 1px solid #e3e3e3; + width: 100%; + margin: auto; + padding: auto; +} + +.header { + padding: 20px; + width: 100%; + min-width: 350px; +} + +.header>h6>a { + text-decoration: none; + color: #262627; +} + +.header>h6>a:hover { + text-decoration: underline; + cursor: pointer; +} + +mat-card { + min-width: 350px; +} + +.top-left-float { + display: flex; + min-width: 282px; +} + +.top-right-float { + display: flex; + min-width: 161px; +} + +.top-left-float>button, +.top-right-float>button { + margin: 5px; + height: 40px; +} + +mat-table { + padding-top: 10px !important; + // table-layout: fixed; + width: 100%; + display: table; + overflow-x: scroll; + + .table-headers { + padding: 5px; + color: #505050; + font-weight: 900; + font-size: medium; + background-color: #f0f0f0; + font-family: nucleo; } - - .header>h6>a:hover { - text-decoration: underline; - cursor: pointer; + + .table-headers:hover { + background-color: #ececec; + color: #46AC9E; } - - - #section-to-print h6 { - text-align: center; + + .table-content { + padding: 5px; + overflow-wrap: inherit; + font-family: nucleo; + } - - table { + + .table-column { width: 100%; } - - .table-container { - width: calc(100vw - 50px); - overflow-x: scroll; - border: 1px solid grey; - // height: 50vh; - } - - .col-header { - color: #000000; - font-weight: bolder; - font-size: medium; - text-align: center; +} + +input { + border: none; + border-bottom: 1px solid silver; +} + +:host ::ng-deep .mat-slide-toggle.mat-checked:not(.mat-disabled) { + + .mat-slide-toggle-thumb { background-color: #46AC9E; - padding: 5px; - border: 1px solid #000000; } - - .col-body { - padding: 5px; - text-align: center; - border: 1px solid #000000; - } - - .col-footer { - padding: 5px; - text-align: center; - font-weight: bolder; - // border: 1px solid #000000; - background-color: rgb(212, 212, 212); - } - - .row { - margin: 5px; + + .mat-slide-toggle-bar { + background-color: skyblue; } - - .container { - margin: 5px; + +} + +// .dialog-body { +// display: flex; +// justify-content: center; +// align-items: center; + +// div { +// width: 90%; +// } +// } + +.dialog-actions { + display: flex; + flex-wrap: wrap; + width: 97%; + justify-content: space-between; + + .btn-group-left { + // min-width: 150px; + margin-top: 5px; } - - .hide { - display: none; + + .btn-group-right { + // min-width: 95px; + margin-top: 5px; } - - mat-icon { - vertical-align: middle; - opacity: .6; +} + +.hide { + display: none; +} + +:host ::ng-deep { + .mat-form-field-infix { + border-bottom: 0px solid white; } - - :host ::ng-deep { - .mat-sort-header-arrow { - color: #000000; - } - - .mat-sort-header-container { - display: flex; - justify-content: center; - } - - .mat-table { - tr { - - th, - td { - vertical-align: middle; - } + + .mat-table { + tr { + + th, + td { + vertical-align: middle; } } } - @media print{ - .header{ - display: none; - } - .row{ - display: none; - } - * { - font-size: 17px !important; +} + + + + +.img-fluid { + margin-right: 5px; + max-height: 40px; +} + +// .navbar { +// background-position: center; +// } + + +@media (max-width: 767px) { + .card { + min-width: 600px; + } +} + + +@media print { + .buttonCard { + display: none; } - + + .backButton { + display: none; } + .printButton { + display: none; + } - .select{ - padding: 10px; - font-size: 16px; - border-radius: 5px; - background-color: #f2f2f2; - border: none; - box-shadow: none; + .excelButton { + display: none; } - .select:focus { - outline: none; - box-shadow: 0 0 5px rgba(0, 0, 0, 0.2); - } \ No newline at end of file +} + +.mat-row:nth-child(even) { + background-color: rgb(255, 255, 255); +} + +.mat-row:nth-child(odd) { + background-color: rgb(241, 241, 241); +} + +.table-container { + margin-top: 20px +} + + +.backButton { + float: left; + margin-top: 5px; + margin-bottom: 5px; + color: #424242; + background-color: white; + height: 37px; + border-radius: 9px; + font-family: nucleo; + // width: 8%; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + transform: translateY(5px); + +} + +.backButton:hover { + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + /* You can adjust the shadow values to your preference */ +} + +.printButton { + float: right; + margin-top: 5px; + margin-bottom: 5px; + background-color: white; + color: #424242; + height: 37px; + border-radius: 9px; + font-family: nucleo; + width: 8%; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + +} + +.printButton:hover { + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + /* You can adjust the shadow values to your preference */ +} + +.excelButton { + float: right; + margin-top: 5px; + margin-bottom: 5px; + color: #424242; + background-color: white; + height: 37px; + border-radius: 9px; + font-family: nucleo; + width: 8%; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + margin-right: 5px; +} + +.excelButton:hover { + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + /* You can adjust the shadow values to your preference */ +} + +.buttonCard { + width: 100%; + background-color: #ffffff; + height: 50px; + margin: 0px; + padding: 0px 16px 0px 16px; + margin-top: 20px; +} + +.reportHeader { + width: 100%; + background-color: #ffffff; + // height: 50px; + margin: 5px 0px 0px 0px; +} + +.bidHeading { + font-family: texg; + color: #353535; +} + +.tenderInfo { + font-family: texg; + color: #353535; +} + +.subHead { + font-family: texg; + color: #353535; +} + +.subDetail { + font-family: nucleo; + color: #353535; +} + +.captchaFont { + font-family: captcha; + font-size: large; +} + +.captchaDiv { + text-align: center; + height: 100px; + display: flex; + align-items: center; + justify-content: center; + + background-image: url('/assets/img/captchaback.jpeg'); +} + +.captchaSubmit{ + float: right; + margin-top: 5px; + margin-bottom: 5px; + color: #424242; + background-color: white; + height: 37px; + border-radius: 9px; + font-family: nucleo; + // width: 8%; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + margin-right: 5px; +} +.captchaSubmit:hover { + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.4); + background-color: rgb(240, 240, 240); + + /* You can adjust the shadow values to your preference */ +} + +.rotate-icon { + animation: rotate 1s infinite; +} + +@keyframes rotate { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} \ No newline at end of file diff --git a/src/app/_modules/report/bid-final-report/bid-final-report.component.ts b/src/app/_modules/report/bid-final-report/bid-final-report.component.ts index 1f2420d..05eb648 100644 --- a/src/app/_modules/report/bid-final-report/bid-final-report.component.ts +++ b/src/app/_modules/report/bid-final-report/bid-final-report.component.ts @@ -1,10 +1,11 @@ import { Component, OnInit, ViewChild, ElementRef } from '@angular/core'; +import { MatDialog } from '@angular/material/dialog'; import { MatSort, Sort } from '@angular/material/sort'; import { MatTableDataSource } from '@angular/material/table'; import { ActivatedRoute, Router } from '@angular/router'; import { apiUrl } from 'src/app/_providers/_resources/api-url.properties'; import { MasterService } from 'src/app/_providers/_services/master.service'; -import { environment } from 'src/environments/environment'; +import { environment } from 'src/environments/environment.prod'; import * as XLSX from 'xlsx'; @Component({ selector: 'app-bid-final-report', @@ -30,15 +31,29 @@ export class BidFinalReportComponent implements OnInit { dataSource: MatTableDataSource; tenderId: number; - + headerData: any; tableData: any; + tenderInputId: any; + + dialogRef: any; + + captchaText: string; + + userCaptchaInput: string; + + captchaMatching: boolean = true; + + userDocId: any; + isIconRotating: boolean; + constructor( private route: ActivatedRoute, private _router: Router, - private _masterService:MasterService + private _masterService: MasterService, + private dialog: MatDialog ) { this.tenderId = +this.route.snapshot.paramMap.get('id'); @@ -60,14 +75,15 @@ export class BidFinalReportComponent implements OnInit { } getHeaderData(id) { - this._masterService.getMasterDatabyId(apiUrl.getTender,id).then(res=>{ + this._masterService.getMasterDatabyId(apiUrl.getTender, id).then(res => { this.headerData = res; + this.tenderInputId = res.tenderId }) } - getTableData(id){ - this._masterService.getMasterDatabyId(apiUrl.bidReport,id).then(res=>{ - this.tableData = res.filter(element=> element.status == 'S'); + getTableData(id) { + this._masterService.getMasterDatabyId(apiUrl.bidReport, id).then(res => { + this.tableData = res.filter(element => element.status == 'S'); this.dataSource = new MatTableDataSource(this.tableData); this.dataSource.sort = this.sort; }) @@ -107,11 +123,11 @@ export class BidFinalReportComponent implements OnInit { sortData(sort: Sort) { // console.log('sorting...'); - + // const data = this.tableData.slice(); // if (!sort.active || sort.direction === '') { // this.dataSource.data = data; - + // return; // } @@ -130,8 +146,55 @@ export class BidFinalReportComponent implements OnInit { // }); } - downloadUserDocs(userId){ - let newWindow = window.location.href = `${environment.apiUrl}/${apiUrl.userBidDoc}/${this.tenderId}/${userId}` + downloadUserDocs(userId) { + let newWindow = window.location.href = `${environment.apiUrl}/${apiUrl.userBidDoc}/${this.tenderId}/${userId}` + } + + openDialogBox(templateRef,userId) { + this.userDocId = userId + this.dialogRef = this.dialog.open(templateRef, { + disableClose: false, + width: '400px' + }); + + this.generateRandomText(); + this.captchaMatching = true + this.userCaptchaInput = '' + } + + + generateRandomText() { + this.isIconRotating = true; + const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; + let randomText = ''; + + for (let i = 0; i < 6; i++) { + const randomIndex = Math.floor(Math.random() * characters.length); + randomText += characters[randomIndex]; + } + + this.captchaText = randomText; + + setTimeout(() => { + this.isIconRotating = false; + }, 1000); + + + } + + captchaCheck(){ + if(this.captchaText == this.userCaptchaInput){ + this.dialogRef.close(); + this.downloadUserDocs(this.userDocId) + + } + else{ + this.captchaMatching = false + setTimeout(() => { + this.captchaMatching = true + }, 2000); + } + } } function compare(a: any, b: any, isAsc: boolean): number { diff --git a/src/app/_modules/report/report.module.ts b/src/app/_modules/report/report.module.ts index f5e3626..c3c9a59 100644 --- a/src/app/_modules/report/report.module.ts +++ b/src/app/_modules/report/report.module.ts @@ -23,7 +23,6 @@ import { MatNativeDateModule } from '@angular/material/core'; import { MatSelectModule } from '@angular/material/select'; import { MatMomentDateModule } from '@angular/material-moment-adapter'; import {MatTooltipModule} from '@angular/material/tooltip'; -// import { NgxMatTimepickerModule } from 'ngx-mat-timepicker'; import { LOCALE_ID } from '@angular/core'; @NgModule({ @@ -49,7 +48,7 @@ import { LOCALE_ID } from '@angular/core'; MatNativeDateModule, MatDatepickerModule, MatMomentDateModule, - MatTooltipModule + MatTooltipModule, ] }) export class ReportModule { } diff --git a/src/app/_providers/_resources/api-url.properties.ts b/src/app/_providers/_resources/api-url.properties.ts index a4cc8ed..754aedb 100644 --- a/src/app/_providers/_resources/api-url.properties.ts +++ b/src/app/_providers/_resources/api-url.properties.ts @@ -41,8 +41,9 @@ export const apiUrl = { noticeDownlaod:"file-upload/notice", bidReport:"payment-master/bid-report", userBidDoc:"file-upload/user-doc-arc", - UploadBidAmount:"payment-master/finalBidAmt" - + UploadBidAmount:"payment-master/finalBidAmt", + paymentCheck:"payment-master/bid-payment-check", + emailUserSubmit:"auth/otp/UD" }; diff --git a/src/app/shared/header/components/user/user.component.html b/src/app/shared/header/components/user/user.component.html index 150e7e1..d7dbaec 100644 --- a/src/app/shared/header/components/user/user.component.html +++ b/src/app/shared/header/components/user/user.component.html @@ -6,15 +6,26 @@ + + +
- - - + +
{{getUser()}} diff --git a/src/app/shared/header/components/user/user.component.scss b/src/app/shared/header/components/user/user.component.scss index 24f3f3e..3001888 100644 --- a/src/app/shared/header/components/user/user.component.scss +++ b/src/app/shared/header/components/user/user.component.scss @@ -3,7 +3,7 @@ @import 'src/app/styles/variables'; .user-button { - background-color:#4b978d; + background-color: #4b978d; box-shadow: none; margin-left: 16px; @@ -27,7 +27,7 @@ &__name { margin-bottom: 4px; - + // font-weight: $fw-lighter; // font-size: $fs-large; // color: $dark-grey; @@ -73,3 +73,15 @@ } } } + +.adminButtom { + transform: translateY(-5px); + background-color: #ECECEC; + color: #46AC9E; + font-family: nucleo; +} + +.adminButtom:hover{ + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.4); + background-color: rgb(187, 187, 187); +} \ No newline at end of file diff --git a/src/app/shared/header/components/user/user.component.ts b/src/app/shared/header/components/user/user.component.ts index ece2905..b294765 100644 --- a/src/app/shared/header/components/user/user.component.ts +++ b/src/app/shared/header/components/user/user.component.ts @@ -17,6 +17,8 @@ export class UserComponent { public routes: typeof routes = routes; public flatlogicEmail: string = "https://flatlogic.com"; adminUser: boolean = false; + username: string; + secuLevel: string; public signOutEmit(): void { localStorage.removeItem('emailId') @@ -36,10 +38,10 @@ ngOnInit(){ this.getEmail(); } getUser(){ - let secuLevel = localStorage.getItem('seculevel') - if(secuLevel && secuLevel == 'B'){ + this.secuLevel = localStorage.getItem('seculevel') + if(this.secuLevel && this.secuLevel == 'B'){ - if(secuLevel === 'B'){ + if(this.secuLevel === 'B'){ this.adminUser = true } else{ @@ -47,9 +49,9 @@ ngOnInit(){ } // this.cdr.detectChanges(); } - let username = localStorage.getItem('username') - if(username) - return username + this.username = localStorage.getItem('username') + if(this.username) + return this.username else return '' } diff --git a/src/app/shared/header/containers/header/header.component.html b/src/app/shared/header/containers/header/header.component.html index 3c8144b..fff657e 100644 --- a/src/app/shared/header/containers/header/header.component.html +++ b/src/app/shared/header/containers/header/header.component.html @@ -1,22 +1,22 @@ -
+
- + + +
+ + \ No newline at end of file diff --git a/src/app/shared/header/containers/header/header.component.scss b/src/app/shared/header/containers/header/header.component.scss index a3aed53..ab8ed15 100644 --- a/src/app/shared/header/containers/header/header.component.scss +++ b/src/app/shared/header/containers/header/header.component.scss @@ -74,4 +74,17 @@ @media (max-width: $small) { display: none; } -} \ No newline at end of file +} +.title{ + font-family: nucleo; + // color: white; + font-weight: 800; +} + +.container-responsive{ +background-image: url('/assets/img/greenployg3.jpg'); + background-size: cover; + background-repeat: no-repeat; + background-position: center; + padding: 10px; + } \ No newline at end of file diff --git a/src/app/shared/header/containers/header/header.component.ts b/src/app/shared/header/containers/header/header.component.ts index 2f58db3..815c82b 100644 --- a/src/app/shared/header/containers/header/header.component.ts +++ b/src/app/shared/header/containers/header/header.component.ts @@ -64,9 +64,11 @@ export class HeaderComponent { } else{ this.router.navigate(['/dashboard']) - } + // if(currentLoc = '/dashboard'){ + // this. goToWebsite() + // } } goToSignIn(){ diff --git a/src/assets/fonts/Poppins-Medium.ttf b/src/assets/fonts/Poppins-Medium.ttf new file mode 100644 index 0000000..5b46f19 Binary files /dev/null and b/src/assets/fonts/Poppins-Medium.ttf differ diff --git a/src/assets/fonts/captcha.ttf b/src/assets/fonts/captcha.ttf new file mode 100644 index 0000000..13f5dc7 Binary files /dev/null and b/src/assets/fonts/captcha.ttf differ diff --git a/src/assets/fonts/texgyreadventor-bold.otf b/src/assets/fonts/texgyreadventor-bold.otf new file mode 100644 index 0000000..51708c5 Binary files /dev/null and b/src/assets/fonts/texgyreadventor-bold.otf differ diff --git a/src/assets/fonts/texgyreadventor-regular.otf b/src/assets/fonts/texgyreadventor-regular.otf new file mode 100644 index 0000000..5c1786d Binary files /dev/null and b/src/assets/fonts/texgyreadventor-regular.otf differ diff --git a/src/assets/i18n/error/en.json b/src/assets/i18n/error/en.json index d3f4e4a..ff287c0 100644 --- a/src/assets/i18n/error/en.json +++ b/src/assets/i18n/error/en.json @@ -119,6 +119,7 @@ "pincodeCantBeBlank":"Pincode Can't Be Blank", "clarificationEndDateCantBeBlank":"Clarification End Date Can't Be Blank", "bidSubmissionEndDateCantBeBlank":"Bid Submission End Date Can't Be Blank", + "bidSubmissionEndDateCantBeGreaterThanbidOpeningDate":"Bid Submission End Date Can't Be Greater Than Bid Opening Date", "documentNameCantBeBlank":"Document Name Can't Be Blank", "UploaddocumentCantBeBlank": "Please Upload Documents", "documentSizeCantBeBlank":"Document Size Can't Be Blank", @@ -132,10 +133,13 @@ "TenderCreatedSuccessfully":"Tender Created Successfully", "pleaseEnableDrawingDocuments": "Please Enable Drawing Documents", "pleaseEnableNoticeDocuments" : "Please Enable Notice Documents", + "Pleasedeletetheexistingfile" :"Please Delete The Existing File Before Adding a New One.", + "pleasePayTheAmountForUpload":"Please Pay The Amount For Upload", "pleaseAddfiles":"Please Add The Remaining Files", "pleaseEnterBidFinalAmount":"Please Enter Bid Final Amount", "pleaseLogin":"Please Login for Downloading", - "pleaseAgreeToTheTermsandCondition":"Please Agree To The Terms and Condition" - + "documentnamecantbesame": "Document Name Can't Be Same ", + "pleaseAgreeToTheTermsandCondition":"Please Agree To The Terms and Condition", + "pleasePayTheAmountForDoc":"Please Pay The Amount For Downloading Documents" } \ No newline at end of file diff --git a/src/assets/i18n/languages/en-sales.json b/src/assets/i18n/languages/en-sales.json index 6750ab3..7823397 100644 --- a/src/assets/i18n/languages/en-sales.json +++ b/src/assets/i18n/languages/en-sales.json @@ -103,6 +103,7 @@ "loading": "Loading...", "loadingData": "Loading Data...", "login": "Login", + "login.": "log in•", "addNewPayment": "Add New Payment", "makeNewPayment": "Make New Payment", "message": "Message", @@ -333,13 +334,14 @@ "taxAmount":"Tax Amount", "hscSac":"HSN/SAC No", "companySettings":"Company Settings", - "register":"Register", + "register":"Register•", "generateOtp":"Generate OTP", "enterOtp":"Enter OTP", "submit":"Submit", "confPass":"Confirm Password", "addTender":"Add Tender", "forgotPass":"Forgot Password?", + "forgotYourPass":"Forgot Your Password?", "assetImagePath":"Asset File Path", "title":"Title", "publishedDate":"Published Date", @@ -350,6 +352,8 @@ "report":"Report", "totalBidAmount":"Total Bid Amount", "documents": "Documents", - "tender":"Tender" + "tender":"Tender", + "tenderId":"Tender Id", + "status":"Status" } \ No newline at end of file diff --git a/src/assets/img/SL-073119-22070-01.jpg b/src/assets/img/SL-073119-22070-01.jpg new file mode 100644 index 0000000..11691e3 Binary files /dev/null and b/src/assets/img/SL-073119-22070-01.jpg differ diff --git a/src/assets/img/captchaback.jpeg b/src/assets/img/captchaback.jpeg new file mode 100644 index 0000000..bd7f5af Binary files /dev/null and b/src/assets/img/captchaback.jpeg differ diff --git a/src/assets/img/emblem2.jpg b/src/assets/img/emblem1.jpg similarity index 100% rename from src/assets/img/emblem2.jpg rename to src/assets/img/emblem1.jpg diff --git a/src/assets/img/emblem3.png b/src/assets/img/emblem3.png new file mode 100644 index 0000000..ef3c4bd Binary files /dev/null and b/src/assets/img/emblem3.png differ diff --git a/src/assets/img/forgot.jpg b/src/assets/img/forgot.jpg new file mode 100644 index 0000000..4beed3c Binary files /dev/null and b/src/assets/img/forgot.jpg differ diff --git a/src/assets/img/greenployg3.jpg b/src/assets/img/greenployg3.jpg new file mode 100644 index 0000000..fa96510 Binary files /dev/null and b/src/assets/img/greenployg3.jpg differ diff --git a/src/assets/img/greenployg5.jpg b/src/assets/img/greenployg5.jpg new file mode 100644 index 0000000..01f9bb2 Binary files /dev/null and b/src/assets/img/greenployg5.jpg differ diff --git a/src/assets/img/greenployg6.jpg b/src/assets/img/greenployg6.jpg new file mode 100644 index 0000000..285a83d Binary files /dev/null and b/src/assets/img/greenployg6.jpg differ diff --git a/src/assets/img/houstone_line.jpg b/src/assets/img/houstone_line.jpg new file mode 100644 index 0000000..000c202 Binary files /dev/null and b/src/assets/img/houstone_line.jpg differ diff --git a/src/assets/img/houstone_line1.jpg b/src/assets/img/houstone_line1.jpg new file mode 100644 index 0000000..98634d5 Binary files /dev/null and b/src/assets/img/houstone_line1.jpg differ diff --git a/src/assets/img/houstone_line2.jpg b/src/assets/img/houstone_line2.jpg new file mode 100644 index 0000000..453a119 Binary files /dev/null and b/src/assets/img/houstone_line2.jpg differ diff --git a/src/assets/img/loginBack.jpg b/src/assets/img/loginBack.jpg new file mode 100644 index 0000000..588de0b Binary files /dev/null and b/src/assets/img/loginBack.jpg differ diff --git a/src/assets/img/loginBackground.jpg b/src/assets/img/loginBackground.jpg new file mode 100644 index 0000000..23b97be Binary files /dev/null and b/src/assets/img/loginBackground.jpg differ diff --git a/src/assets/img/th img.jpg b/src/assets/img/th img.jpg new file mode 100644 index 0000000..6c6491d Binary files /dev/null and b/src/assets/img/th img.jpg differ diff --git a/src/assets/img/thimg2.jpg b/src/assets/img/thimg2.jpg new file mode 100644 index 0000000..41ba495 Binary files /dev/null and b/src/assets/img/thimg2.jpg differ diff --git a/src/assets/img/thimg3.jpg b/src/assets/img/thimg3.jpg new file mode 100644 index 0000000..dc8d788 Binary files /dev/null and b/src/assets/img/thimg3.jpg differ diff --git a/src/custom-theme.scss b/src/custom-theme.scss index 1829437..b045b68 100644 --- a/src/custom-theme.scss +++ b/src/custom-theme.scss @@ -397,4 +397,23 @@ div.apexcharts-xaxistooltip-bottom:after { .custom-green-snackbar { background-color: #00a300; color: white; // Set the text color to white or any other contrasting color for better visibility +} + +@font-face { + font-family: 'nucleo'; + src: url('assets/fonts/Poppins-Medium.ttf'); +} + +@font-face { + font-family: 'texg'; + src: url('assets/fonts/texgyreadventor-bold.otf'); +} +@font-face { + font-family: 'texg-regular'; + src: url('assets/fonts/texgyreadventor-regular.otf'); +} + +@font-face { + font-family: 'captcha'; + src: url('assets/fonts/captcha.ttf'); } \ No newline at end of file diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts index 2f4509c..1b7db9b 100644 --- a/src/environments/environment.prod.ts +++ b/src/environments/environment.prod.ts @@ -4,6 +4,8 @@ export const environment = { // apiUrl:'https://sales.api.accuratesoftware.online/api/v1', apiUrl: 'https://tenderapi.accuratesoftware.online/api/v1', + // apiUrl: 'http://192.168.1.112:3200/api/v1', + production: true, hmr: false, diff --git a/src/environments/environment.ts b/src/environments/environment.ts index df93921..71055f9 100644 --- a/src/environments/environment.ts +++ b/src/environments/environment.ts @@ -4,8 +4,8 @@ export const environment = { - //apiUrl: 'http://192.168.1.112:3500/api/v1', - apiUrl: 'https://tenderapi.accuratesoftware.online/api/v1', + //apiUrl: 'http://192.168.1.112:3200/api/v1', + apiUrl: 'https://tenderapi.accuratesoftware.online/api/v1', production: false, hmr: false, diff --git a/src/favicon.ico b/src/favicon.ico index 02a88c0..85f0a61 100644 Binary files a/src/favicon.ico and b/src/favicon.ico differ diff --git a/yarn.lock b/yarn.lock index 59ea2f5..214e0a6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -136,7 +136,7 @@ "ora" "5.3.0" "rxjs" "6.6.3" -"@angular/animations@^11.0.0 || ^12.0.0", "@angular/animations@^11.2.13": +"@angular/animations@^11.2.13": "integrity" "sha512-+TcJbMmKZI4kbSLp7TCJzOYkm90qe54OLWcNH6bi2NC9S0QsXaPo73yRP8sERjg/DjRj+wBf3LY63FvHZmqcTA==" "resolved" "https://registry.npmjs.org/@angular/animations/-/animations-11.2.13.tgz" "version" "11.2.13" @@ -180,7 +180,7 @@ "universal-analytics" "0.4.23" "uuid" "8.3.2" -"@angular/common@^11.0.0 || ^12.0.0", "@angular/common@>=10.0.0", "@angular/common@>=6.0.0", "@angular/common@>=9.0.0", "@angular/common@~11.2.13": +"@angular/common@~11.2.13": "integrity" "sha512-96iZ4wlZado78yG6eY/ZmY6+H2X2hJi2XsK7iXKzc5h3oeILEkt+ulfBNkCNjMm8xPYBmLrSBueG96/T4/Bi5w==" "resolved" "https://registry.npmjs.org/@angular/common/-/common-11.2.13.tgz" "version" "11.2.13" @@ -220,7 +220,7 @@ "resolved" "https://registry.npmjs.org/@angular/compiler/-/compiler-9.0.0.tgz" "version" "9.0.0" -"@angular/core@^11.0.0 || ^12.0.0", "@angular/core@^12.0.0 || ^13.0.0-0", "@angular/core@>=10.0.0", "@angular/core@>=6.0.0", "@angular/core@>=9.0.0", "@angular/core@~11.2.13": +"@angular/core@~11.2.13": "integrity" "sha512-xMKskq/Sbf8dkX/vx4WCwXMpDTJJ77rGlP8fVTB8az8QeOa14i6AdpmSXaJ8sl68R3v8Y1Pa9yBQytbKuxShqQ==" "resolved" "https://registry.npmjs.org/@angular/core/-/core-11.2.13.tgz" "version" "11.2.13" @@ -232,7 +232,7 @@ "resolved" "https://registry.npmjs.org/@angular/core/-/core-9.0.0.tgz" "version" "9.0.0" -"@angular/forms@^11.0.0 || ^12.0.0", "@angular/forms@~11.2.13": +"@angular/forms@~11.2.13": "integrity" "sha512-Q5vNHycS+II2xYOE/HJB4NoYg/Ngg6hPF+0KXdCA7L4kfrwx5Fsi4oZ6gRRnSpzSGedISpSU4VE5wPiq7zJ3+A==" "resolved" "https://registry.npmjs.org/@angular/forms/-/forms-11.2.13.tgz" "version" "11.2.13" @@ -251,7 +251,7 @@ dependencies: "tslib" "^2.2.0" -"@angular/material@^11.2.12", "@angular/material@12.2.13": +"@angular/material@^11.2.12": "integrity" "sha512-n3HDKoM552jLcmxtpTYzMUzV6V9vUBKyNs7SNdUfjuK00VJlTWMu03g/QWOj2Y9KftOuDUa8+N2XodwAr+jtCw==" "resolved" "https://registry.npmjs.org/@angular/material/-/material-11.2.12.tgz" "version" "11.2.12" @@ -1201,7 +1201,7 @@ "merge-source-map" "^1.1.0" "schema-utils" "^2.7.0" -"@ng-idle/core@^11.0.3", "@ng-idle/core@^11.1.0": +"@ng-idle/core@^11.1.0": "integrity" "sha512-/hf3LDFz3UCTe2H6r1bq6Kn6mo5B5mxaU5XVqcDfE4Vdlx9evTqBXyl0VpWbuzZbohVCfWq31mEjbxg9lbY4bw==" "resolved" "https://registry.npmjs.org/@ng-idle/core/-/core-11.1.0.tgz" "version" "11.1.0" @@ -1224,7 +1224,7 @@ "enhanced-resolve" "5.7.0" "webpack-sources" "2.2.0" -"@ngx-translate/core@^13.0.0", "@ngx-translate/core@>=13.0.0": +"@ngx-translate/core@^13.0.0": "integrity" "sha512-+tzEp8wlqEnw0Gc7jtVRAJ6RteUjXw6JJR4O65KlnxOmJrCGPI0xjV/lKRnQeU0w4i96PQs/jtpL921Wrb7PWg==" "resolved" "https://registry.npmjs.org/@ngx-translate/core/-/core-13.0.0.tgz" "version" "13.0.0" @@ -5626,7 +5626,7 @@ "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" "version" "1.0.4" -"moment@^2.18.1", "moment@^2.29.1": +"moment@^2.29.1": "integrity" "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" "resolved" "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz" "version" "2.29.4" @@ -7426,13 +7426,6 @@ dependencies: "tslib" "^1.9.0" -"rxjs@>=6.5.3", "rxjs@7.0.0": - "integrity" "sha512-I1V/ArAtGJg4kmCfms8fULm0SwYgEsAf2d5WPCBGzTYm2qTjO3Tx4EDFaGjbOox8CeEsC69jQK22mnmfyA26sw==" - "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-7.0.0.tgz" - "version" "7.0.0" - dependencies: - "tslib" "~2.1.0" - "rxjs@6.6.3": "integrity" "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==" "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz" @@ -7440,6 +7433,13 @@ dependencies: "tslib" "^1.9.0" +"rxjs@7.0.0": + "integrity" "sha512-I1V/ArAtGJg4kmCfms8fULm0SwYgEsAf2d5WPCBGzTYm2qTjO3Tx4EDFaGjbOox8CeEsC69jQK22mnmfyA26sw==" + "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-7.0.0.tgz" + "version" "7.0.0" + dependencies: + "tslib" "~2.1.0" + "safe-buffer@^5.0.1", "safe-buffer@^5.1.0", "safe-buffer@^5.1.1", "safe-buffer@^5.1.2", "safe-buffer@>=5.1.0", "safe-buffer@~5.1.0", "safe-buffer@~5.1.1", "safe-buffer@5.1.2": "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz"