new modifications

main
sajan 3 years ago
parent f3a0aaaac4
commit 92249688d9

@ -24,7 +24,7 @@ export class AppGuard implements CanActivate {
state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean { state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
const currentUser = localStorage.getItem("authtoken"); const currentUser = localStorage.getItem("authtoken");
console.log("===currentUser====",currentUser); // console.log("===currentUser====",currentUser);
if (!currentUser) { if (!currentUser) {
return true; return true;
} }

@ -29,7 +29,7 @@ export class AuthStudentGuard implements CanActivate, CanActivateChild {
{ {
const currentUser = localStorage.getItem("authtoken"); const currentUser = localStorage.getItem("authtoken");
const secuLevel = localStorage.getItem("seculevel"); const secuLevel = localStorage.getItem("seculevel");
console.log("==sec level===", secuLevel); // console.log("==sec level===", secuLevel);
if (currentUser && secuLevel.toString() == "2") { if (currentUser && secuLevel.toString() == "2") {
// await this.lan.init(); // await this.lan.init();
@ -45,7 +45,7 @@ export class AuthStudentGuard implements CanActivate, CanActivateChild {
url = `${authKey}${routePath.login}`; url = `${authKey}${routePath.login}`;
else else
url = routePath.login; url = routePath.login;
console.log("=====url===", url); // console.log("=====url===", url);
await this.router.navigate([url], { queryParams: { returnUrl: state.url } }); await this.router.navigate([url], { queryParams: { returnUrl: state.url } });

@ -41,7 +41,7 @@ export class AuthGuard implements CanActivate, CanActivateChild {
if (authKey) { if (authKey) {
url = `${authKey}${routePath.home}`; url = `${authKey}${routePath.home}`;
} }
url = routePath.home; url = routePath.website;
await this.router.navigate([url], { queryParams: { returnUrl: state.url } }); await this.router.navigate([url], { queryParams: { returnUrl: state.url } });

@ -40,6 +40,7 @@ export class TenderDetailDto{
periodOfWork: number ; periodOfWork: number ;
preBidMeetPlace: string ; preBidMeetPlace: string ;
bidOpeningPlace: string ; bidOpeningPlace: string ;
bidOpenAddress: string ;
publishDate: Date |any ; publishDate: Date |any ;
saleStartDate: Date |any ; saleStartDate: Date |any ;
clarificationStartDate: Date |any ; clarificationStartDate: Date |any ;

@ -51,8 +51,8 @@ export class AdminHomeComponent implements OnInit {
getData(){ getData(){
this._masterService.getMasterData(apiUrl.getTender).then((res) =>{ this._masterService.getMasterData(apiUrl.getTender +'?order[id]=DESC').then((res) =>{
console.log("tenderData=1=",res); // console.log("tenderData=1=",res);
this.tenderData = res; this.tenderData = res;
this.dataCopy = res; this.dataCopy = res;
this.pageLength = this.tenderData.length; this.pageLength = this.tenderData.length;

@ -6,9 +6,11 @@ import { AdminHomeComponent } from './admin-home/admin-home.component';
import { ViewComponent } from './view/view.component'; import { ViewComponent } from './view/view.component';
import { UploadComponent } from './upload/upload.component'; import { UploadComponent } from './upload/upload.component';
import { RegisterComponent } from './register/register.component'; import { RegisterComponent } from './register/register.component';
import { WebsiteComponent } from './website/website.component';
const routes: Routes = [ const routes: Routes = [
{ path: '', redirectTo: 'admin-home', pathMatch: 'full' }, { path: '', redirectTo: 'website', pathMatch: 'full' },
{ path: 'website', component: WebsiteComponent },
{ path: 'admin-home', component: AdminHomeComponent }, { path: 'admin-home', component: AdminHomeComponent },
{ path: 'login', component: LoginComponent }, { path: 'login', component: LoginComponent },
{ path: 'view/:id', component: ViewComponent }, { path: 'view/:id', component: ViewComponent },

@ -20,6 +20,9 @@ import { MatFormFieldModule } from '@angular/material/form-field';
import { MatTableModule } from '@angular/material/table'; import { MatTableModule } from '@angular/material/table';
import { MatPaginatorModule } from '@angular/material/paginator'; import { MatPaginatorModule } from '@angular/material/paginator';
import { MatSortModule } from '@angular/material/sort'; import { MatSortModule } from '@angular/material/sort';
import { WebsiteComponent } from './website/website.component';
import { AdminHomeComponent } from './admin-home/admin-home.component';
import { MatTooltipModule } from '@angular/material/tooltip';
// import { AdminHomeComponent } from './admin-home/admin-home.component'; // import { AdminHomeComponent } from './admin-home/admin-home.component';
@ -30,7 +33,8 @@ import { MatSortModule } from '@angular/material/sort';
ViewComponent, ViewComponent,
UploadComponent, UploadComponent,
RegisterComponent, RegisterComponent,
// AdminHomeComponent WebsiteComponent,
AdminHomeComponent
], ],
imports: [ imports: [
CommonModule, CommonModule,
@ -42,6 +46,7 @@ import { MatSortModule } from '@angular/material/sort';
MatIconModule, MatIconModule,
MatButtonModule, MatButtonModule,
MatToolbarModule, MatToolbarModule,
MatTooltipModule,
MatSelectModule, MatSelectModule,
MatDatepickerModule, MatDatepickerModule,
MatProgressBarModule, MatProgressBarModule,

@ -97,7 +97,7 @@ export class ForgotPasswordComponent implements OnInit {
} }
setTimer() { setTimer() {
console.log("here"); // console.log("here");
this.timeLeft = 300; this.timeLeft = 300;
this.time = setInterval(() => { this.time = setInterval(() => {
if (this.timeLeft > 0) { if (this.timeLeft > 0) {
@ -151,7 +151,7 @@ export class ForgotPasswordComponent implements OnInit {
onOtpChange(otp) { onOtpChange(otp) {
this.otpValue = otp; this.otpValue = otp;
console.log("==otp==", this.otpValue.length); // console.log("==otp==", this.otpValue.length);
} }
goToLogin() { goToLogin() {

@ -84,14 +84,14 @@ export class LoginComponent implements OnInit {
if (!this.preSave()) if (!this.preSave())
return return
this.loading = true; this.loading = true;
console.log("loading", this.loading); // console.log("loading", this.loading);
this.error = ""; this.error = "";
this.submitted = true; this.submitted = true;
// this.user.username = this.user.username.toUpperCase(); // this.user.username = this.user.username.toUpperCase();
// stop here if form is invalid // stop here if form is invalid
if (this.loginForm.invalid) { if (this.loginForm.invalid) {
this.loading = false; this.loading = false;
console.log("loading", this.loading); // console.log("loading", this.loading);
return; return;
} }
@ -101,17 +101,17 @@ export class LoginComponent implements OnInit {
localStorage.setItem('authtoken', res.accessToken); localStorage.setItem('authtoken', res.accessToken);
localStorage.setItem('refreshtoken', res.refreshToken); localStorage.setItem('refreshtoken', res.refreshToken);
localStorage.setItem('emailId', res.emailId); localStorage.setItem('emailId', res.emailId);
console.log("==seclevel==", res.seculevel); // console.log("==seclevel==", res.seculevel);
await this._ui.getUserInfo({ username: this.user.username }).then((res) => { await this._ui.getUserInfo({ username: this.user.username }).then((res) => {
console.log("fFFf",res); // console.log("fFFf",res);
localStorage.setItem('username', res.username); localStorage.setItem('username', res.username);
localStorage.setItem('userId', res.userId); localStorage.setItem('userId', res.userId);
localStorage.setItem('mobile', res.mobile); localStorage.setItem('mobile', res.mobile);
localStorage.setItem('seculevel', res.secuLevel); localStorage.setItem('seculevel', res.secuLevel);
}, (err) => { }, (err) => {
console.log("err=1=", err); // console.log("err=1=", err);
this._ui.toastMessage((err.error.message) ? err.error.message : this.errorTranslateService.translate('errorInApi')); this._ui.toastMessage((err.error.message) ? err.error.message : this.errorTranslateService.translate('errorInApi'));
}); });
let returnUrl = localStorage.getItem('returnUrl') let returnUrl = localStorage.getItem('returnUrl')
@ -127,7 +127,7 @@ export class LoginComponent implements OnInit {
}, (err) => { }, (err) => {
this.loading = false; this.loading = false;
console.log("=== here=err==", err); // console.log("=== here=err==", err);
localStorage.setItem('authtoken', ''); localStorage.setItem('authtoken', '');
localStorage.setItem('refreshtoken', ''); localStorage.setItem('refreshtoken', '');
localStorage.setItem('emailId', ''); localStorage.setItem('emailId', '');

@ -78,10 +78,17 @@
<div class="row"> <div class="row">
<div class="col-10 col-sm-10 col-md-12 col-lg-10 col-xl-10"> <div class="col-10 col-sm-10 col-md-12 col-lg-10 col-xl-10">
<mat-form-field style="width: 100%"> <mat-form-field style="width: 100%" appearance="outline">
<input matInput [(ngModel)]="this.userDetails.otp" type="text" placeholder="{{ 'enterOtp' | translate }}"> <mat-label>{{ 'enterOtp' | translate }}</mat-label>
<input matInput [(ngModel)]="userDetails.otp" type="text" placeholder="{{ 'enterOtp' | translate }}" style="width:100%;border-bottom: 0px;">
<mat-icon
matTooltip="{{ 'Please check both inbox and spam folder for OTP' | translate }}"
matTooltipPosition="above"
class="tooltip-icon"
style="position: absolute; top: 37%; right: 0; transform: translateY(-50%);">
info_outline
</mat-icon>
</mat-form-field> </mat-form-field>
</div> </div>

@ -136,3 +136,19 @@
font-family: nucleo; font-family: nucleo;
} }
// ------------------------------------------------------------------------------------
// .element-with-tooltip {
// cursor: pointer; /* Set the cursor style to pointer for the element */
// font-family: nucleo;
// }
.custom-tooltip{
font-family: nucleo;
}

@ -38,26 +38,25 @@ export class RegisterComponent implements OnInit {
} }
sendOTP(template) { sendOTP(template) {
this.openDialogbox(template)
// if (this.userDetails.email && this._uiService.emailValidation(this.userDetails.email)) { if (this.userDetails.email && this._uiService.emailValidation(this.userDetails.email)) {
// let body = { email: this.userDetails.email }; let body = { email: this.userDetails.email };
// this._masterService.saveAllMasterData(apiUrl.registerOtp, body).then(res => { this._masterService.saveAllMasterData(apiUrl.registerOtp, body).then(res => {
// this._uiService.toastMessage(this.errorTranslateService.translate("otpSendSuccessfully")); this._uiService.toastMessage(this.errorTranslateService.translate("otpSendSuccessfully"));
// this.openDialogbox(template) this.openDialogbox(template)
// },err=>{ },err=>{
// this._uiService.toastMessage((err.error.message) ? err.error.message : this.errorTranslateService.translate('errorInApi')); this._uiService.toastMessage((err.error.message) ? err.error.message : this.errorTranslateService.translate('errorInApi'));
// }) })
// } }
// else { else {
// this._uiService.toastMessage(this.errorTranslateService.translate("enterAValidEmailID")); this._uiService.toastMessage(this.errorTranslateService.translate("enterAValidEmailID"));
// } }
} }
openDialogbox(templateRef) { openDialogbox(templateRef) {
console.log('this'); // console.log('this');
this.dialogRef = this.dialog.open(templateRef, { this.dialogRef = this.dialog.open(templateRef, {
width: '400px', width: '400px',
disableClose: false disableClose: false

@ -35,16 +35,16 @@ export class UploadComponent implements OnInit {
preSave(){ preSave(){
if(this.formData.name == '' || this.formData.name == undefined){ if(this.formData.name == '' || this.formData.name == undefined){
console.log("1"); // console.log("1");
return false return false
} }
if(this.formData.phone == '' || this.formData.phone == undefined || this.formData.phone.length > 10 || this.formData.phone.length < 10){ if(this.formData.phone == '' || this.formData.phone == undefined || this.formData.phone.length > 10 || this.formData.phone.length < 10){
console.log("ph"); // console.log("ph");
return false return false
} }
if(this.formData.email == '' || this.formData.email == undefined){ if(this.formData.email == '' || this.formData.email == undefined){
console.log("e"); // console.log("e");
return false return false
} }
return true return true

@ -267,6 +267,10 @@
<th>Bid Opening Place</th> <th>Bid Opening Place</th>
<td>{{tenderData.bidOpeningPlace}}</td> <td>{{tenderData.bidOpeningPlace}}</td>
</tr> </tr>
<tr>
<th>Bid Opening Address</th>
<td>{{tenderData.bidOpenAddress}}</td>
</tr>
<tr> <tr>
<th>Pre Bid Meeting Place</th> <th>Pre Bid Meeting Place</th>
<td>{{tenderData.preBidMeetPlace}}</td> <td>{{tenderData.preBidMeetPlace}}</td>
@ -354,7 +358,7 @@
</tr> </tr>
<tr class="hide-on-print"> <tr class="hide-on-print">
<th colspan="12"><button mat-raised-button id="zipFile" class="hide-on-print DownloadZipButton" (click)="goToView()"> <i class="bi bi-file-earmark-zip" ></i> Download </button> </th> <th colspan="12"><button *ngIf="showDownloadButton" mat-raised-button id="zipFile" class="hide-on-print DownloadZipButton" (click)="downloadWITZip()"> <i class="bi bi-file-earmark-zip" ></i> Download </button> </th>
</tr> </tr>
</tbody> </tbody>
@ -367,7 +371,7 @@
<tr class="hide-on-print"> <tr class="hide-on-print">
<th colspan="12">Drawings <button mat-raised-button id="zipFile" class="hide-on-print DownloadZipButton" (click)="goToView()"> <i class="bi bi-file-earmark-zip"></i> Download</button></th> <th colspan="12">Drawings <button *ngIf="showDownloadButton" mat-raised-button id="zipFile" class="hide-on-print DownloadZipButton" (click)="DownloadDrawingsZIP()"> <i class="bi bi-file-earmark-zip"></i> Download</button></th>
</tr> </tr>

@ -20,6 +20,9 @@ export class ViewComponent implements OnInit {
workItemDocuments: any; workItemDocuments: any;
drawingsDocuments: any; drawingsDocuments: any;
tenderDocuments: any; tenderDocuments: any;
OnlinePayment: boolean;
currentDate = new Date();
showDownloadButton: boolean;
@ -27,12 +30,16 @@ export class ViewComponent implements OnInit {
private route: ActivatedRoute, private route: ActivatedRoute,
private _masterService: MasterService, private _masterService: MasterService,
private _ui:UiService, private _ui:UiService,
private _errorTranslate:ErrorTranslateService) { private _errorTranslate:ErrorTranslateService,
private _errorTranslateService: ErrorTranslateService) {
this.nitItemDocuments = []
this.workItemDocuments=[];
this.drawingsDocuments =[];
this.tenderId = +this.route.snapshot.paramMap.get('id'); this.tenderId = +this.route.snapshot.paramMap.get('id');
} }
ngOnInit(): void { ngOnInit(): void {
this.tenderData = new TenderDetailDto() this.tenderData = new TenderDetailDto()
console.log("this.tenderId",this.tenderId); // console.log("this.tenderId",this.tenderId);
this.getData() this.getData()
} }
@ -40,10 +47,26 @@ export class ViewComponent implements OnInit {
getData(){ getData(){
this._masterService.getMasterDatabyId(apiUrl.AllTenderData,this.tenderId).then((res) =>{ this._masterService.getMasterDatabyId(apiUrl.AllTenderData,this.tenderId).then((res) =>{
console.log("tenderData",res); // console.log("tenderData",res);
this.tenderData = res this.tenderData = res
this.tenderDocuments = this.tenderData['tenderDoc'] this.tenderDocuments = this.tenderData['tenderDoc']
console.log("data",this.tenderDocuments); if(this.tenderData.paymentModeD.paymentMode == 'Online'){
this.OnlinePayment = true
}else {
this.OnlinePayment = false;
}
const saleStartDate = new Date(this.tenderData.saleStartDate);
const saleEndDate = new Date(this.tenderData.saleEndDate);
if (this.currentDate >= saleStartDate && this.currentDate <= saleEndDate) {
this.showDownloadButton = true; // Enable the button
} else {
this.showDownloadButton = false; // Disable the button
}
// console.log("data",this.tenderDocuments);
this.filterDataByCategory(); this.filterDataByCategory();
}) })
} }
@ -54,6 +77,7 @@ filterDataByCategory() {
this.drawingsDocuments = this.tenderDocuments.filter(doc => doc.documentCategory === 'D'); this.drawingsDocuments = this.tenderDocuments.filter(doc => doc.documentCategory === 'D');
this.workItemDocuments = this.tenderDocuments.filter(doc => doc.documentCategory === 'WID'); this.workItemDocuments = this.tenderDocuments.filter(doc => doc.documentCategory === 'WID');
this.nitItemDocuments = this.tenderDocuments.filter(doc => doc.documentCategory === 'NIT'); this.nitItemDocuments = this.tenderDocuments.filter(doc => doc.documentCategory === 'NIT');
} }
@ -73,14 +97,24 @@ filterDataByCategory() {
window.print(); window.print();
} }
DownloadDrawingsZIP(){ DownloadDrawingsZIP() {
if ( this.OnlinePayment) {
// 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);
this.goToView()
}
else {
const id = this.tenderId; const id = this.tenderId;
this._masterService.getMasterDatabyId(apiUrl.drawingsDownloadDocs,id).then((res)=>{ this._masterService.getMasterDatabyId(apiUrl.drawingsDownloadDocs, id).then((res) => {
}, err => { }, err => {
console.log('res===>', err); // console.log('res===>', err);
if (err.status == 200) { if (err.status == 200) {
console.log('start >>>'); // console.log('start >>>');
// window.open(`${environment.apiUrl}/${apiUrl.bankDocs}/${id}`); // window.open(`${environment.apiUrl}/${apiUrl.bankDocs}/${id}`);
let newWindow = window.open(`${environment.apiUrl}/${apiUrl.drawingsDownloadDocs}/${id}`); let newWindow = window.open(`${environment.apiUrl}/${apiUrl.drawingsDownloadDocs}/${id}`);
setTimeout(() => { setTimeout(() => {
@ -88,7 +122,7 @@ filterDataByCategory() {
}, 100); }, 100);
} }
if (err.status == 404) { if (err.status == 404) {
alert('No Drawings Document Found for the selected Tender.'); alert('No Bank Document Found for the selected Tender.');
} }
if (err.status == 500) { if (err.status == 500) {
alert(`${err.message}`); alert(`${err.message}`);
@ -102,20 +136,20 @@ filterDataByCategory() {
} }
}) })
}
} }
DownloadNIT(index: number) { DownloadNIT(index: number) {
const id = this.tenderId; const id = this.tenderId;
console.log(index); // console.log(index);
console.log(this.nitItemDocuments[index].docName); // console.log(this.nitItemDocuments[index].docName);
this._masterService.getMasterDatabyId(apiUrl.noticeDownlaod, `${this.tenderId}/${this.nitItemDocuments[index].docName}`).then((res) => { this._masterService.getMasterDatabyId(apiUrl.noticeDownlaod, `${this.tenderId}/${this.nitItemDocuments[index].docName}`).then((res) => {
} , err => { } , err => {
console.log('res===>', err); // console.log('res===>', err);
if (err.status == 200) { if (err.status == 200) {
console.log('start >>>'); // console.log('start >>>');
// window.open(`${environment.apiUrl}/${apiUrl.bankDocs}/${id}`); // window.open(`${environment.apiUrl}/${apiUrl.bankDocs}/${id}`);
let newWindow = window.open(`${environment.apiUrl}/${apiUrl.noticeDownlaod}/${this.tenderId}/${this.nitItemDocuments[index].docName}`); let newWindow = window.open(`${environment.apiUrl}/${apiUrl.noticeDownlaod}/${this.tenderId}/${this.nitItemDocuments[index].docName}`);
// setTimeout(() => { // setTimeout(() => {
@ -140,7 +174,54 @@ filterDataByCategory() {
} }
downloadWITZip() {
if (this.OnlinePayment) {
// 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);
this.goToView()
}
else {
// console.log('clicked');
const id = this.tenderId;
// let newWindow = window.open(`${environment.apiUrl}/${apiUrl.bankDocs}/${id}`);
// setTimeout(() => {
// newWindow.close();
// }, 10);
this._masterService.getMasterDatabyId(apiUrl.bankDocs, 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.bankDocs}/${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);
}
})
// window.open('http://192.168.1.112:3500/api/v1/file-upload/Bank-Documents-Arc/'+id);
}
}
// downloadWITZip() { // downloadWITZip() {
// console.log('clicked'); // console.log('clicked');
// const id = this.tenderId; // const id = this.tenderId;
@ -181,8 +262,10 @@ filterDataByCategory() {
// } // }
goToView(){ goToView(){
this._ui.toastMessage(this._errorTranslate.translate('pleaseLogin')); this._ui.toastMessage(this._errorTranslate.translate('pleaseLogin'));
localStorage.setItem('returnUrl',`tender-view/${this.tenderId}`) localStorage.setItem('returnUrl',`tender-view/${this.tenderId}`)
this.navigateTo('auth/login') this.navigateTo('auth/login')
}
}
} }

@ -0,0 +1,341 @@
<html lang="en">
<head>
<meta charset="utf-8">
<meta content="width=device-width, initial-scale=1.0" name="viewport">
<title >Thrickodithanam SCB</title>
<meta content="" name="description">
<meta content="" name="keywords">
<!-- Favicons -->
<link href="assets\img\emblem.png" rel="icon">
<!-- Google Fonts -->
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,600,600i,700,700i|Lato:400,300,700,900" rel="stylesheet">
<!-- Vendor CSS Files -->
<link href="/assets/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="/assets/vendor/bootstrap-icons/bootstrap-icons.css" rel="stylesheet">
<link href="/assets/vendor/glightbox/css/glightbox.min.css" rel="stylesheet">
<link href="/assets/vendor/swiper/swiper-bundle.min.css" rel="stylesheet">
<!-- Template Main CSS File -->
<link href="/assets/css/style.css" rel="stylesheet">
</head>
<body >
<!-- ======= Header ======= -->
<header id="header" class="fixed-top d-flex align-items-center">
<div class="container d-flex align-items-center">
<div class="logo me-auto" >
<p></p> <h2>
<a ><img src="assets\img\emblem2.jpg" alt="" class="img-fluid"><span class="titleName">Thrickodithanam SCB</span></a>
<!-- <a href="index.html"><img src="assets\img\emblem2.jpg" alt="" class="img-fluid"> THRICKODITHANAM SCB</a> -->
</h2>
</div>
<nav id="navbar" class="navbar">
<ul>
<li><a class="nav-link scrollto active" href="#hero">Home</a></li>
<li><a class="nav-link scrollto" href="#about">About Us</a></li>
<li><a class="nav-link scrollto" href="#services">Services</a></li>
<li><a class="nav-link scrollto" href="#branches">Branches</a></li>
<li class="dropdown"><a class="nav-link scrollto" href="#call-to-action"><span>Tenders</span></a>
<ul>
<!-- <li><a href="#">Notice</a></li> -->
<li><a href="https://www.thrickodithanamscb.in/#/auth/admin-home" >Tender Form</a></li>
<!-- <li><a href="tenderviewpage.html">Tender download </a></li> -->
<!-- <li class="dropdown"><a href="#"><span>hello</span> <i class="bi bi-chevron-right"></i></a>
<ul>
<li><a href="#">bank</a></li>
<li><a href="#">chitty</a></li>
<li><a href="#">ambulance</a></li>
<li><a href="#">auction</a></li>
<li><a href="#">notice</a></li>
</ul>
</li> -->
</ul>
</li>
<li><a class="nav-link scrollto" href="#contact">Contact Us</a></li>
</ul>
<i class="bi bi-list mobile-nav-toggle"></i>
</nav><!-- .navbar -->
</div>
</header>
<!-- End #header -->
<!-- Start Marquee -->
<section id="Marquee">
<div class="marquee-container">
<div class="marquee-content">
<p>സ്വാഗതം തൃക്കൊടിത്താനം സര്‍വ്വീസ് സഹകരണ ബാങ്ക് LTD No.178 &nbsp;&nbsp;1920 ആഗസ്റ്റ് മാസത്തിൽ പ്രവർത്തനം ആരഭിച്ച്100 വർഷക്കാലമായി തൃക്കൊടിത്താനം ഗ്രാമപഞ്ചായത്തിലെ കർഷകരുടെ
താങ്ങും തണലുമായി പ്രവർത്തിക്കുന്നു</p>
</div>
</div>
</section>
<!-- End Marquee -->
<!-- ======= Hero Section ======= -->
<br><br><section id="hero">
<div class="hero-container" >
<h2>WELCOME<br>TO<br>THRICKODITHANAM SERVICE CO-OPERATIVE BANK</h2>
</div>
</section><!-- #hero -->
<main id="main">
<!-- ======= About Us Section ======= -->
<br><section id="about" class="about">
<div class="container">
<div class="section-title">
<h2><B>ABOUT US</B></h2>
</div>
<div class="row">
<h3><strong>Thrickodithanam Service Co-operative Bank LTD No.178</strong></h3>
<div class="col-lg-4 order-1 order-lg-2">
<img src="assets\img\emblem.jpeg" class="img-fluid" alt="">
</div>
<div class="col-lg-8 pt-4 pt-lg-0 order-2 order-lg-1">
<p>
<br>
On August 1920, Thrickodithanam Cooperative Bank started its operations in the Gram Panchayat, with the aim of uplifting the financial growth of farmers and rural communities. Over the course of a century, it has become a stable and reliable institution serving the agricultural sector, contributing to educational progress and enriching the daily lives of people. Thrickodithanam Service Co-operative Bank, with its customer-centric and innovative approach, has remained a steadfast partner to the farming community, offering a range of services to meet their financial and banking requirements. The bank's commitment to empowering the rural population and facilitating agricultural activities has made it a beacon of progress in the Grama Panchayat.
</p><br>
<!-- <ul>
<li><i class="bi bi-check2-circle"></i> ബഹുമാനപ്പെട്ട ജോയിന്‍റ് രജിസ്ട്രാറുടെ <b>28/09/2016 -ലെ സി.ആർ.പി (2)
1258 16/ കെ.ഡി.എസ്</b> ഉത്തരവു പ്രകാരം <b>01/07/2014</b> മുതൽ ബാങ്കിനെ <b>ക്ലാസ്സ് 1 സൂപ്പർ ഗ്രേഡ്</b>
വിഭാഗത്തിലേയ്ക്ക് ഉയർത്തിയിട്ടുണ്ട്.</li>
<li><i class="bi bi-check2-circle"></i> <b>31/03/2022</b>-ൽ <b>23000</b>-ൽ പരം അംഗങ്ങളും, <b>37438785</b> ഓഹരി മൂലധനവും ഉണ്ട്.</li>
</ul> -->
</div>
</div>
<p>
The bank has been successful in transforming the financial growth of the Gram Panchayat. It has played a significant role in fostering the development of the agricultural sector, promoting educational progress, and enriching the daily lives of the people. The bank's operations have led to the prosperity of the farming community, as well as improved the overall quality of life for the residents by providing ample opportunities for education and financial stability.
</p><br>
<p>
Recognized and appreciated for its efforts, the Joint Registrar's order, dated 28th September 2016 (C.R.P (2) 1258/16/KDS), elevated the bank to Class 1 Super Grade category from 1st July 2014 onwards. The bank has successfully fulfilled its mission of empowering the farming community, promoting educational development, and making the lives of people prosperous. this institution stands as a trustworthy and progressive entity, serving the financial needs of farmers and the agricultural sector.
</p>
</div>
</section><br><!-- End About Us Section -->
<!-- ======= Services Section ======= -->
<section id="services" class="services section-bg">
<div class="container">
<div class="section-title">
<h2><b>SERVICES</b></h2>
<!-- <p>Thrickodithanam SCB provide different services</p> -->
</div>
<div class="row">
<div class="col-lg-4 col-md-6 icon-box">
<div class="icon"><i class="bi bi-currency-rupee"></i></div>
<h4 class="title"><a href="">Deposits</a></h4>
<p class="description">Has investment of Rs 169 crore rupees.</p>
</div>
<div class="col-lg-4 col-md-6 icon-box">
<div class="icon"><i class="bi bi-clipboard-data"></i></div>
<h4 class="title"><a href="">Chitty/GDCS</a></h4>
<p class="description">Has Chitty/GDCS with total Sala of 1 crore with 5% Bank Commission.</p>
</div>
<div class="col-lg-4 col-md-6 icon-box">
<div class="icon"><i class="bi bi-globe"></i></div>
<h4 class="title"><a href="">Loans</a></h4>
<p class="description">Loans are provided transparently, efficiently and without delay and hassles with limit of 50 lakh Rupees.</p>
</div>
<div class="col-lg-4 col-md-6 icon-box">
<div class="icon"><i class="bi bi-shop-window"></i></div>
<h4 class="title"><a href="">Consumer Store Manure Depo</a></h4>
<p class="description">Sells and distribute Quality fertilizer for farmers and daily use items less than the market price
</p>
</div>
<div class="col-lg-4 col-md-6 icon-box">
<div class="icon"><i class="bi bi-capsule"></i></div>
<h4 class="title"><a href="">Neethi Medical Store</a></h4>
<p class="description">Sells medicines with 12-40% discount.</p>
</div>
<div class="col-lg-4 col-md-6 icon-box">
<div class="icon"><i class="bi bi-bag-heart-fill"></i></div>
<h4 class="title"><a href="">Welfare Pension & Santhwanam Scheme</a></h4>
<p class="description">Provide therapeutic aid for terminally ill patients living within the operational area of the bank. Disbursement of Welfare Pensions in Thrickodithanam.
</p>
</div>
</div>
</div>
</section><!-- End Services Section -->
<!-- ======= Branches Section ======= -->
<section id="branches" class="branches section">
<div class="container">
<div class="section-title">
<h2><b>BRANCHES</b></h2>
<!-- <p>Thrickodithanam SCB has ____ branches.</p> -->
</div>
<div class="row">
<div class="col-lg-4 col-md-6 icon-box">
<div class="icon"><i class="bi bi-bank"></i></div>
<!-- <div class="icon"><i class="bi bi-cpu"></i></div> -->
<h4 class="title"><a href="">Kunnumpuram Branch</a></h4>
<!-- <p class="description">Voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident</p> -->
</div>
<div class="col-lg-4 col-md-6 icon-box">
<div class="icon"><i class="bi bi-bank"></i></div>
<h4 class="title"><a href="">Kodinattumkunnu Branch</a></h4>
<!-- <p class="description">Minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat tarad limino ata</p> -->
</div>
<div class="col-lg-4 col-md-6 icon-box">
<div class="icon"><i class="bi bi-bank"></i></div>
<h4 class="title"><a href="">Manthanam Branch</a></h4>
<!-- <p class="description">Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur</p> -->
</div>
<!-- <div class="col-lg-4 col-md-6 icon-box">
<div class="icon"><i class="bi bi-images"></i></div>
<h4 class="title"><a href="">Head Office</a></h4>
<p class="description">Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum</p>
</div> -->
<!-- <div class="col-lg-4 col-md-6 icon-box">
<div class="icon"><i class="bi bi-sliders"></i></div>
<h4 class="title"><a href="">Branch 5</a></h4>
<p class="description">At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque</p>
</div>
<div class="col-lg-4 col-md-6 icon-box">
<div class="icon"><i class="bi bi-building"></i></div>
<h4 class="title"><a href="">Branch 6</a></h4>
<p class="description">Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi</p>
</div> -->
</div>
</div>
</section><!-- End Branches Section -->
<!-- ======= Call To Action Section ======= -->
<section id= "call-to-action" div class="call-to-action">
<div class="container">
<div class="text-center">
<h3>TENDERS</h3>
<br>
<p>NEW TENDER FILES</p>
<a class="cta-btn" style="color: rgb(255, 255, 255);cursor: pointer;" (click)="openTender()">view</a>
</div>
</div>
</section>
<!-- End Call To Action Section -->
<!-- ======= Contact Us Section ======= -->
<section id="contact" class="contact section-bg">
<div class="container">
<div class="section-title">
<h2><B>CONTACT US</B></h2>
<p><B>തൃക്കൊടിത്താനം സര്‍വ്വീസ് സഹകരണ ബാങ്ക് LTD No.178</B></p>
<!-- <p><B>1920 ആഗസ്റ്റ്</B> മാസത്തിൽ പ്രവർത്തനം ആരംഭിച്ച് <B>100</B> വർഷക്കാലമായി തൃക്കൊടിത്താനം ഗ്രാമപഞ്ചായത്തിലെ കർഷകരുടെ
താങ്ങും തണലുമായി നിലകൊണ്ട ബാങ്ക് ആണ് <B>തൃക്കൊടിത്താനം സർവീസ് കോ-ഓപ്പറേറ്റീവ് ബാങ്ക്</B>.</p> -->
</div>
<div class="row mt-5 justify-content-center">
<div class="col-lg-10">
<div class="info-wrap">
<div class="row">
<div class="col-lg-4 info">
<i class="bi bi-geo-alt"></i>
<h4>Location:</h4><br>
<p>
<a href="https://www.google.com/maps/place/Thrickodithanam+Co-operative+society+bank/@9.4390492,76.5679773,17z/data=!4m14!1m7!3m6!1s0x3b0625c1b8b2fd05:0x8d8145101dd95ac6!2sThrickodithanam+Co-operative+society+bank!8m2!3d9.4390492!4d76.5679773!16s%2Fg%2F11cn79tyf8!3m5!1s0x3b0625c1b8b2fd05:0x8d8145101dd95ac6!8m2!3d9.4390492!4d76.5679773!16s%2Fg%2F11cn79tyf8?entry=ttu" target="_blank">
Thrickodithanam Service Co-operative Bank LTD No 178, Kunnumpuram, Thrickodithanam, Kottayam, Kerala, 686105.
</a>
</p>
</div>
<div class="col-lg-4 info mt-4 mt-lg-0">
<i class="bi bi-envelope"></i>
<h4>Email:</h4><br>
<p>
<a href="mailto:tscb178@gmail.com">
tscb178@gmail.com
</a>
</p>
</div>
<div class="col-lg-4 info mt-4 mt-lg-0">
<i class="bi bi-phone"></i>
<h4>Call:</h4><br>
<p>
<a href="tel:0481-2441062">0481-2441062</a><br>
<a href="tel:0481-2443452">0481-2443452 </a><br>
</p>
</div>
</div>
<br>
<br>
</div>
<br>
</div>
</div>
</div>
</section><!--End Contact Us Section -->
<!-- ======= Map Section ======= -->
<section class="map">
<iframe src="https://www.google.com/maps/embed?pb=@9.4390492,76.5679773,17z/!4m14!1m7!3m6!1s0x3b0625c1b8b2fd05:0x8d8145101dd95ac6!2sThrickodithanam+Co-operative+society+bank!8m2!3d9.4390492!4d76.5679773!16s%2Fg%2F11cn79tyf8!3m5!1s0x3b0625c1b8b2fd05:0x8d8145101dd95ac6!8m2!3d9.4390492!4d76.5679773!16s%2Fg%2F11cn79tyf8
" frameborder="0" style="border:0;" allowfullscreen=""></iframe>
<!-- <iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3024.2219901290355!2d-74.00369368400567!3d40.71312937933185!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x89c25a23e28c1191%3A0x49f75d3281df052a!2s150%20Park%20Row%2C%20New%20York%2C%20NY%2010007%2C%20USA!5e0!3m2!1sen!2sbg!4v1579767901424!5m2!1sen!2sbg" frameborder="0" style="border:0;" allowfullscreen=""></iframe> -->
<!-- <iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3024.2219901290355!2d-74.00369368400567!3d40.71312937933185!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x89c25a23e28c1191%3A0x49f75d3281df052a!2s150%20Park%20Row%2C%20New%20York%2C%20NY%2010007%2C%20USA!5e0!3m2!1sen!2sbg!4v1579767901424!5m2!1sen!2sbg" frameborder="0" style="border:0;" allowfullscreen=""></iframe> -->
<!-- <iframe src="https://www.google.com/maps/place/Thrickodithanam+Co-operative+society+bank/@9.4390492,76.5679773,17z/data=!4m14!1m7!3m6!1s0x3b0625c1b8b2fd05:0x8d8145101dd95ac6!2sThrickodithanam+Co-operative+society+bank!8m2!3d9.4390492!4d76.5679773!16s%2Fg%2F11cn79tyf8!3m5!1s0x3b0625c1b8b2fd05:0x8d8145101dd95ac6!8m2!3d9.4390492!4d76.5679773!16s%2Fg%2F11cn79tyf8?entry=ttu" frameborder="0" style="border:0;" allowfullscreen=""></iframe> -->
</section><!-- End Map Section -->
</main><!-- End #main -->
<!-- ======= Footer ======= -->
<footer id="footer">
<div class="container">
<div class="copyright">
&copy; Copyright <strong><span>Thrickodithanamscb 2023</span></strong>. All Rights Reserved
</div>
<div class="credits" style="color: #ffffff;">
Designed by <a href="https://www.simssoftware.in/" style="color: inherit;">SiMS</a>
</div>
<div class="policy" style="color: #ffffff;">
<a href="https://merchant.razorpay.com/policy/MEnUF6qZ103PRC/privacy " style="color: inherit;">Privacy Policy,</a>
<!-- <a href="Privacy-policy.html" style="color: inherit;"> Privacy Policy,</a> -->
<a href="https://merchant.razorpay.com/policy/MEnUF6qZ103PRC/terms" style="color: inherit;"> Terms and Conditions,</a>
<a href="https://merchant.razorpay.com/policy/MEnUF6qZ103PRC/refund" style="color: inherit;"> Cancellation and Refund,</a>
<a href="https://merchant.razorpay.com/policy/MEnUF6qZ103PRC/shipping" style="color: inherit;"> Shipping and Delivery,</a>
<a href="https://merchant.razorpay.com/policy/MEnUF6qZ103PRC/contact_us" style="color: inherit;"> Contact Us</a>
</div>
</div>
</footer><!-- End #footer -->
<a href="#" class="back-to-top d-flex align-items-center justify-content-center"><i class="bi bi-arrow-up-short"></i></a>
<!-- Vendor JS Files -->
<script src="/assets/vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
<script src="/assets/vendor/glightbox/js/glightbox.min.js"></script>
<script src="/assets/vendor/isotope-layout/isotope.pkgd.min.js"></script>
<script src="/assets/vendor/swiper/swiper-bundle.min.js"></script>
<script src="/assets/vendor/php-email-form/validate.js"></script>
<!-- Template Main JS File -->
<script src="/assets/js/main.js"></script>
</body>
</html>

@ -0,0 +1,3 @@
.titleName{
font-family: texg;
}

@ -0,0 +1,25 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { WebsiteComponent } from './website.component';
describe('WebsiteComponent', () => {
let component: WebsiteComponent;
let fixture: ComponentFixture<WebsiteComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [ WebsiteComponent ]
})
.compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(WebsiteComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

@ -0,0 +1,22 @@
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
@Component({
selector: 'app-website',
templateUrl: './website.component.html',
styleUrls: ['./website.component.scss']
})
export class WebsiteComponent implements OnInit {
constructor(
private router:Router
) { }
ngOnInit(): void {
}
openTender(){
this.router.navigate(['/auth/admin-home'])
}
}

@ -219,24 +219,25 @@
<div class="card"> <div class="card">
<div class="card-body"> <div class="card-body">
<div class="form-row"> <div class="form-row">
<div class="form-group col-md-6"> <div class="form-group col-md-4">
<label for="title">Title</label> <label for="title">Title</label>
<input type="text" class="form-control" id="title" <input type="text" class="form-control" id="title"
[(ngModel)]="tenderData.title" name="title"> [(ngModel)]="tenderData.title" name="title">
</div> </div>
<div class="form-group col-md-6"> <div class="form-group col-md-4">
<label for="workDesc">Work Description</label> <label for="workDesc">Work Description</label>
<input type="text" class="form-control" id="workDesc" <input type="text" class="form-control" id="workDesc"
[(ngModel)]="tenderData.workDesc" name="workDesc"> [(ngModel)]="tenderData.workDesc" name="workDesc">
</div> </div>
</div>
<div class="form-row">
<div class="form-group col-md-4"> <div class="form-group col-md-4">
<label for="tenderValue">Tender Value in ₹</label> <label for="tenderValue">Tender Value in ₹</label>
<input type="number" class="form-control" id="tenderValue" <input type="number" class="form-control" id="tenderValue"
[(ngModel)]="tenderData.tenderValue" name="tenderValue"> [(ngModel)]="tenderData.tenderValue" name="tenderValue">
</div> </div>
</div>
<div class="form-row">
<div class="form-group col-md-4"> <div class="form-group col-md-4">
<label for="productCategory">Product Category</label> <label for="productCategory">Product Category</label>
<select class="form-control" id="productCategory" <select class="form-control" id="productCategory"
@ -253,10 +254,6 @@
<input type="text" class="form-control" id="subCategory" <input type="text" class="form-control" id="subCategory"
[(ngModel)]="tenderData.subCategory" name="subCategory"> [(ngModel)]="tenderData.subCategory" name="subCategory">
</div> </div>
</div>
<div class="form-row">
<div class="form-group col-md-4"> <div class="form-group col-md-4">
<label for="ndaPreQualification">Pre Qualification</label> <label for="ndaPreQualification">Pre Qualification</label>
<input type="text" class="form-control" id="ndaPreQualification" <input type="text" class="form-control" id="ndaPreQualification"
@ -264,6 +261,11 @@
</div> </div>
</div>
<div class="form-row">
<div class="form-group col-md-4"> <div class="form-group col-md-4">
<label for="bidValidity">Bid Validity(Days)</label> <label for="bidValidity">Bid Validity(Days)</label>
<input type="number" class="form-control" id="bidValidity" <input type="number" class="form-control" id="bidValidity"
@ -274,17 +276,17 @@
<input type="number" class="form-control" id="periodOfWork" <input type="number" class="form-control" id="periodOfWork"
[(ngModel)]="tenderData.periodOfWork" name="periodOfWork"> [(ngModel)]="tenderData.periodOfWork" name="periodOfWork">
</div> </div>
</div>
<div class="form-row">
<div class="form-group col-md-4"> <div class="form-group col-md-4">
<label for="location">Location</label> <label for="location">Location</label>
<input type="text" class="form-control" id="location" <input type="text" class="form-control" id="location"
[(ngModel)]="tenderData.location" name="location"> [(ngModel)]="tenderData.location" name="location">
</div> </div>
</div>
<div class="form-row">
<div class="form-group col-md-4"> <div class="form-group col-md-4">
<label for="pincode">Pincode</label> <label for="pincode">Pincode</label>
@ -296,6 +298,11 @@
<input type="text" class="form-control" id="bidOpeningPlace" <input type="text" class="form-control" id="bidOpeningPlace"
[(ngModel)]="tenderData.bidOpeningPlace" name="bidOpeningPlace"> [(ngModel)]="tenderData.bidOpeningPlace" name="bidOpeningPlace">
</div> </div>
<div class="form-group col-md-4">
<label for="bidOpenAddress">Bid Opening Address</label>
<input type="text" class="form-control" id="bidOpenAddress"
[(ngModel)]="tenderData.bidOpenAddress" name="bidOpenAddress">
</div>
</div> </div>
<div class="form-row"> <div class="form-row">
@ -649,7 +656,7 @@
</mat-tab> </mat-tab>
<mat-tab label="Tender Documents" [disabled]="false"> <br><br> <mat-tab label="Tender Documents" [disabled]="true"> <br><br>
<div class="col-md-12"> <div class="col-md-12">

@ -106,14 +106,14 @@ export class AddTendersComponent implements OnInit {
this.drawingsDocuments = this.tenderData.tenderDoc.filter(element=> element.documentCategory == 'D'); this.drawingsDocuments = this.tenderData.tenderDoc.filter(element=> element.documentCategory == 'D');
for(let i=0;i<this.drawingsDocuments.length;i++){ for(let i=0;i<this.drawingsDocuments.length;i++){
this.drawingsDocuments[i].file = this.drawingsDocuments[i].docName; this.drawingsDocuments[i].file = this.drawingsDocuments[i].docName;
console.log("this.drawingsDocuments===",this.drawingsDocuments); // console.log("this.drawingsDocuments===",this.drawingsDocuments);
} }
this.nitDocuments = this.tenderData.tenderDoc.filter(element=> element.documentCategory == 'NIT'); this.nitDocuments = this.tenderData.tenderDoc.filter(element=> element.documentCategory == 'NIT');
for(let i=0;i<this.nitDocuments.length;i++){ for(let i=0;i<this.nitDocuments.length;i++){
this.nitDocuments[i].file = this.nitDocuments[i].docName; this.nitDocuments[i].file = this.nitDocuments[i].docName;
console.log("this.nitDocuments===",this.nitDocuments); // console.log("this.nitDocuments===",this.nitDocuments);
} }
@ -121,7 +121,7 @@ export class AddTendersComponent implements OnInit {
this.workItemDocuments = this.tenderData.tenderDoc.filter(element=> element.documentCategory == 'WID'); this.workItemDocuments = this.tenderData.tenderDoc.filter(element=> element.documentCategory == 'WID');
for(let i=0;i<this.workItemDocuments.length;i++){ for(let i=0;i<this.workItemDocuments.length;i++){
this.workItemDocuments[i].file = this.workItemDocuments[i].docName; this.workItemDocuments[i].file = this.workItemDocuments[i].docName;
console.log("this.workItemDocuments===",this.workItemDocuments); // console.log("this.workItemDocuments===",this.workItemDocuments);
} }
@ -167,14 +167,14 @@ export class AddTendersComponent implements OnInit {
}) })
this._masterService.getMasterData(apiUrl.emdFeeType).then((res) =>{ this._masterService.getMasterData(apiUrl.emdFeeType).then((res) =>{
this.emdFeeTypeLov = res this.emdFeeTypeLov = res
console.log("emdFeeTypeLov",this.emdFeeTypeLov); // console.log("emdFeeTypeLov",this.emdFeeTypeLov);
}) })
this._masterService.getMasterData(apiUrl.documentType).then((res) =>{ this._masterService.getMasterData(apiUrl.documentType).then((res) =>{
this.documentTypeLov = res this.documentTypeLov = res
console.log("res========================",res); // console.log("res========================",res);
this.filteredDocumentDrawingTypeLov = this.documentTypeLov.filter(docType => docType.docCategory === 'D'); this.filteredDocumentDrawingTypeLov = this.documentTypeLov.filter(docType => docType.docCategory === 'D');
this.filteredDocumentNITTypeLov = this.documentTypeLov.filter(docType => docType.docCategory === 'N'); this.filteredDocumentNITTypeLov = this.documentTypeLov.filter(docType => docType.docCategory === 'N');
@ -227,7 +227,7 @@ export class AddTendersComponent implements OnInit {
newRow.crud = 'I' newRow.crud = 'I'
newRow.userId = this.userID newRow.userId = this.userID
this.nitDocuments.push(newRow); this.nitDocuments.push(newRow);
console.log('===this.nitDocuments===',this.nitDocuments); // console.log('===this.nitDocuments===',this.nitDocuments);
} }
} }
@ -242,7 +242,7 @@ export class AddTendersComponent implements OnInit {
newRow.crud = 'I' newRow.crud = 'I'
newRow.userId = this.userID newRow.userId = this.userID
this.drawingsDocuments.push(newRow); this.drawingsDocuments.push(newRow);
console.log('===this.drawingsDocuments===',this.drawingsDocuments); // console.log('===this.drawingsDocuments===',this.drawingsDocuments);
} }
@ -259,7 +259,7 @@ export class AddTendersComponent implements OnInit {
newRow.userId = this.userID newRow.userId = this.userID
this.workItemDocuments.push(newRow); this.workItemDocuments.push(newRow);
this.newDRWROW = true this.newDRWROW = true
console.log(this.workItemDocuments); //console.log(this.workItemDocuments);
} }
@ -293,9 +293,9 @@ export class AddTendersComponent implements OnInit {
if(file && this.id) if(file && this.id)
this._masterService.postMasterData(apiUrl.docUpload,fd,this.id).then((res)=>{ this._masterService.postMasterData(apiUrl.docUpload,fd,this.id).then((res)=>{
console.log("res1===",res.fileName); // console.log("res1===",res.fileName);
console.log("res2===",res.fileSizeKB); // console.log("res2===",res.fileSizeKB);
console.log('======= this.tenderData.tenderDocs==========', this.tenderData.tenderDoc); // console.log('======= this.tenderData.tenderDocs==========', this.tenderData.tenderDoc);
if(type == 'WID'){ if(type == 'WID'){
@ -397,9 +397,9 @@ UploadNoticeFiles(event: any, i: number, type: string) {
const fd = new FormData(); const fd = new FormData();
fd.append('file', file); fd.append('file', file);
if(file && this.id) if(file && this.id)
console.log(" this.drawingsDocuments", this.drawingsDocuments); // console.log(" this.drawingsDocuments", this.drawingsDocuments);
this._masterService.postMasterData(apiUrl.drawingUploadDoc,fd,this.id).then((res) =>{ this._masterService.postMasterData(apiUrl.drawingUploadDoc,fd,this.id).then((res) =>{
console.log("drawings===",res); // console.log("drawings===",res);
this.drawingsDocuments[i].docName = res.fileName this.drawingsDocuments[i].docName = res.fileName
this.drawingsDocuments[i].file = res.fileName; this.drawingsDocuments[i].file = res.fileName;
this.drawingsDocuments[i].documentSize =res.fileSizeKB; this.drawingsDocuments[i].documentSize =res.fileSizeKB;
@ -483,7 +483,7 @@ UploadNoticeFiles(event: any, i: number, type: string) {
BasicDetails(){ BasicDetails(){
if(this.tenderData.orgChain =='' || this.tenderData.orgChain == null || this.tenderData.orgChain == undefined){ if(this.tenderData.orgChain =='' || this.tenderData.orgChain == null || this.tenderData.orgChain == undefined){
this._ui.toastMessage(this.errorTranslateService.translate("organisationNameCantBeBlank"),2000,true); this._ui.toastMessage(this.errorTranslateService.translate("organisationNameCantBeBlank"),2000,true);
console.log("errrrr"); // console.log("errrrr");
} }
else if(this.tenderData.tenderRefNo =='' || this.tenderData.tenderRefNo == null || this.tenderData.tenderRefNo == undefined){ else if(this.tenderData.tenderRefNo =='' || this.tenderData.tenderRefNo == null || this.tenderData.tenderRefNo == undefined){
this._ui.toastMessage(this.errorTranslateService.translate("tenderReferenceNumberCantBeBlank"),2000,true); this._ui.toastMessage(this.errorTranslateService.translate("tenderReferenceNumberCantBeBlank"),2000,true);
@ -592,6 +592,9 @@ UploadNoticeFiles(event: any, i: number, type: string) {
else if(this.tenderData.bidOpeningPlace =='' || this.tenderData.bidOpeningPlace == null || this.tenderData.bidOpeningPlace == undefined){ else if(this.tenderData.bidOpeningPlace =='' || this.tenderData.bidOpeningPlace == null || this.tenderData.bidOpeningPlace == undefined){
this._ui.toastMessage(this.errorTranslateService.translate("bidOpeningPlaceCantBeBlank"),2000,true); this._ui.toastMessage(this.errorTranslateService.translate("bidOpeningPlaceCantBeBlank"),2000,true);
} }
else if(this.tenderData.bidOpenAddress =='' || this.tenderData.bidOpenAddress == null || this.tenderData.bidOpenAddress == undefined){
this._ui.toastMessage(this.errorTranslateService.translate("bidOpenAddressCantBeBlank"),2000,true);
}
// else if(this.tenderData.contractType =='' || this.tenderData.contractType == null || this.tenderData.contractType == undefined){ // else if(this.tenderData.contractType =='' || this.tenderData.contractType == null || this.tenderData.contractType == undefined){
// this._ui.toastMessage(this.errorTranslateService.translate("contractTypeCantBeBlank"),2000,true); // this._ui.toastMessage(this.errorTranslateService.translate("contractTypeCantBeBlank"),2000,true);
@ -610,32 +613,33 @@ UploadNoticeFiles(event: any, i: number, type: string) {
// this._ui.toastMessage(this.errorTranslateService.translate("preBidMeetingPlaceCantBeBlank"),2000,true); // this._ui.toastMessage(this.errorTranslateService.translate("preBidMeetingPlaceCantBeBlank"),2000,true);
// } // }
else this.nextTab() else this.nextTab()
} }
CriticalDates(){ CriticalDates(){
if( this.tenderData.publishDate == null || this.tenderData.publishDate == undefined){ if( this.tenderData.publishDate == '' || this.tenderData.publishDate == null || this.tenderData.publishDate == undefined){
this._ui.toastMessage(this.errorTranslateService.translate("publishedDateCantBeBlank"),2000,true); this._ui.toastMessage(this.errorTranslateService.translate("publishedDateCantBeBlank"),2000,true);
} }
else if( this.tenderData.saleStartDate == null || this.tenderData.saleStartDate == undefined){ else if(this.tenderData.saleStartDate == '' || this.tenderData.saleStartDate == null || this.tenderData.saleStartDate == undefined){
this._ui.toastMessage(this.errorTranslateService.translate("documentDownloadSaleStartCantBeBlank"),2000,true); this._ui.toastMessage(this.errorTranslateService.translate("documentDownloadSaleStartCantBeBlank"),2000,true);
} }
// else if( this.tenderData.clarificationStartDate == null || this.tenderData.clarificationStartDate == undefined){ // else if( this.tenderData.clarificationStartDate == null || this.tenderData.clarificationStartDate == undefined){
// this._ui.toastMessage(this.errorTranslateService.translate("clarificationStartDateCantBeBlank"),2000,true); // this._ui.toastMessage(this.errorTranslateService.translate("clarificationStartDateCantBeBlank"),2000,true);
// } // }
else if( this.tenderData.saleEndDate == null || this.tenderData.saleEndDate == undefined){ else if(this.tenderData.saleEndDate == '' || this.tenderData.saleEndDate == null || this.tenderData.saleEndDate == undefined){
this._ui.toastMessage(this.errorTranslateService.translate("documentDownloadSaleEndCantBeBlank"),2000,true); this._ui.toastMessage(this.errorTranslateService.translate("documentDownloadSaleEndCantBeBlank"),2000,true);
} }
// else if( this.tenderData.clarificationEndDate == null || this.tenderData.clarificationEndDate == undefined){ // else if( this.tenderData.clarificationEndDate == null || this.tenderData.clarificationEndDate == undefined){
// this._ui.toastMessage(this.errorTranslateService.translate("clarificationEndDateCantBeBlank"),2000,true); // this._ui.toastMessage(this.errorTranslateService.translate("clarificationEndDateCantBeBlank"),2000,true);
// } // }
else if( this.tenderData.bidSubStartDate == null || this.tenderData.bidSubStartDate == undefined){ else if(this.tenderData.bidSubStartDate == '' || this.tenderData.bidSubStartDate == null || this.tenderData.bidSubStartDate == undefined){
this._ui.toastMessage(this.errorTranslateService.translate("bidSubmissionStartDateCantBeBlank"),2000,true); this._ui.toastMessage(this.errorTranslateService.translate("bidSubmissionStartDateCantBeBlank"),2000,true);
} }
else if( this.tenderData.bidSubEndDate == null || this.tenderData.bidSubEndDate == undefined){ else if(this.tenderData.bidSubEndDate == '' || this.tenderData.bidSubEndDate == null || this.tenderData.bidSubEndDate == undefined){
this._ui.toastMessage(this.errorTranslateService.translate("bidSubmissionEndDateCantBeBlank"),2000,true); this._ui.toastMessage(this.errorTranslateService.translate("bidSubmissionEndDateCantBeBlank"),2000,true);
} }
else if (this.tenderData.bidSubEndDate && this.tenderData.bidOpenDate && this.tenderData.bidSubEndDate > this.tenderData.bidOpenDate) { else if (this.tenderData.bidSubEndDate && this.tenderData.bidOpenDate && this.tenderData.bidSubEndDate > this.tenderData.bidOpenDate) {
@ -793,7 +797,7 @@ return true
submit(){ submit(){
this.tenderData.crud = 'I' this.tenderData.crud = 'I'
console.log('onsub---',this.tenderData); // console.log('onsub---',this.tenderData);
if( this.tenderData.tenderInvName == '' || this.tenderData.tenderInvName == null || this.tenderData.tenderInvName == undefined){ if( this.tenderData.tenderInvName == '' || this.tenderData.tenderInvName == null || this.tenderData.tenderInvName == undefined){
this._ui.toastMessage(this.errorTranslateService.translate("nameCantBeBlank"),2000,true); this._ui.toastMessage(this.errorTranslateService.translate("nameCantBeBlank"),2000,true);
@ -805,10 +809,10 @@ return true
} }
this._masterService.saveMasterData(apiUrl.AllTenderData,this.tenderData).then((res)=>{ this._masterService.saveMasterData(apiUrl.AllTenderData,this.tenderData).then((res)=>{
console.log('successssssssss========',res); // console.log('successssssssss========',res);
this.id = res['id'] this.id = res['id']
this.tenderData = res this.tenderData = res
console.log('this.id========',this.id); // console.log('this.id========',this.id);
if(res){ if(res){
Swal.fire( Swal.fire(
@ -838,7 +842,7 @@ return true
nextTab() { nextTab() {
console.log("dtaa=",this.tenderData); // console.log("dtaa=",this.tenderData);
const selectedIndex = this.tabGroup.selectedIndex; const selectedIndex = this.tabGroup.selectedIndex;
const tabCount = this.tabGroup._tabs.length; const tabCount = this.tabGroup._tabs.length;
@ -857,7 +861,7 @@ return true
} }
} }
display(){ display(){
console.log('ddddaaatttaa===',this.tenderData); // console.log('ddddaaatttaa===',this.tenderData);
} }

@ -119,7 +119,7 @@
<!-- <mat-icon>sort</mat-icon> --> <!-- <mat-icon>sort</mat-icon> -->
</th> </th>
<td mat-cell *matCellDef="let element;let i=index" style="padding: 5px;" class="table-content first-column"> <td mat-cell *matCellDef="let element;let i=index" style="padding: 5px;" class="table-content first-column">
<button class="editButton" mat-button <button class="editButton" mat-button *ngIf="!element.HideEdit"
(click)="goToEdit(element.id)" [disabled]="false"> (click)="goToEdit(element.id)" [disabled]="false">
<svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 512 512"><path d="M290.74 93.24l128.02 128.02-277.99 277.99-114.14 12.6C11.35 513.54-1.56 500.62.14 485.34l12.7-114.22 277.9-277.88zm207.2-19.06l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.76 18.75-49.16 0-67.91z" fill="#424242"/></svg> <svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 512 512"><path d="M290.74 93.24l128.02 128.02-277.99 277.99-114.14 12.6C11.35 513.54-1.56 500.62.14 485.34l12.7-114.22 277.9-277.88zm207.2-19.06l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.76 18.75-49.16 0-67.91z" fill="#424242"/></svg>
</button> </button>

@ -78,7 +78,7 @@ export class DashboardComponent implements OnInit {
) { ) {
// this.user$ = this.getUser(); // this.user$ = this.getUser();
this.seculevel = localStorage.getItem('seculevel') this.seculevel = localStorage.getItem('seculevel')
console.log('=====level====',this.seculevel); // console.log('=====level====',this.seculevel);
this.userId = localStorage.getItem('userId'); this.userId = localStorage.getItem('userId');
this.tenderId = +this.route.snapshot.paramMap.get('id'); this.tenderId = +this.route.snapshot.paramMap.get('id');
@ -113,13 +113,15 @@ export class DashboardComponent implements OnInit {
} }
getData(){ getData(){
let newDate = new Date(); let newDate = new Date();
// let currentDate = this.datePipe.transform(newDate, 'yyyy-MM-ddTHH:mm:ss') // let currentDate = this.datePipe.transform(newDate, 'yyyy-MM-ddTHH:mm:ss')
if(this.seculevel != 'B') if(this.seculevel != 'B')
this._masterService.getMasterData(apiUrl.getTender).then((res) =>{ this._masterService.getMasterData(apiUrl.getTender + '?order[id]=DESC').then((res) =>{
console.log("tenderData=1=",res); // console.log("tenderData=1=",res);
this.tenderData = res; this.tenderData = res;
@ -150,7 +152,7 @@ export class DashboardComponent implements OnInit {
console.error(err) console.error(err)
}) })
else else
this._masterService.getMasterData(apiUrl.adminTenderView).then((res) =>{ this._masterService.getMasterData(apiUrl.adminTenderView +'?order[id]=DESC').then((res) =>{
this.tenderData = res; this.tenderData = res;
@ -158,11 +160,17 @@ export class DashboardComponent implements OnInit {
const publishDate: Date = new Date(element.publishDate); const publishDate: Date = new Date(element.publishDate);
const bidSubEndDate: Date = new Date(element.bidSubEndDate); const bidSubEndDate: Date = new Date(element.bidSubEndDate);
const bidOpenDate: Date = new Date(element.bidOpenDate); let bidOpenDate: Date = new Date(element.bidOpenDate);
bidOpenDate.setMinutes(bidOpenDate.getMinutes() - 30);
if(newDate >= bidOpenDate){ if(newDate >= bidOpenDate){
element.reportHide = 'false' element.reportHide = 'false'
} }
if(newDate > publishDate){
element.HideEdit = true
}else {
element.HideEdit = false
}
if(newDate >= publishDate && newDate <= bidOpenDate){ if(newDate >= publishDate && newDate <= bidOpenDate){
// console.log('1111111 ',element.bidSubStartDate); // console.log('1111111 ',element.bidSubStartDate);
@ -184,7 +192,7 @@ export class DashboardComponent implements OnInit {
this.dataSource.paginator = this.paginator; this.dataSource.paginator = this.paginator;
this.noData = (this.tenderData && this.tenderData.length == 0) ? true : false; this.noData = (this.tenderData && this.tenderData.length == 0) ? true : false;
this.loading = false; this.loading = false;
console.log("tenderData=2=",res); // console.log("tenderData=2=",res);
},err=>{ },err=>{
console.error(err) console.error(err)
@ -337,8 +345,10 @@ export class DashboardComponent implements OnInit {
} }
paymentCheck(){ paymentCheck(){
// console.log("this.userId");
// console.log("this.tenderId");
this._masterService.getMasterDatabyId(apiUrl.paymentCheck, `${this.userId}/${this.tenderId}`).then(res => { this._masterService.getMasterDatabyId(apiUrl.paymentCheck, `${this.userId}/${this.tenderId}`).then(res => {
console.log('pay res=>', res); // console.log('pay res=>', res);
if (res.length >0 && res[0].transId && res[0].transId != null && res[0].transId != undefined) { if (res.length >0 && res[0].transId && res[0].transId != null && res[0].transId != undefined) {
this.amountPaid = true this.amountPaid = true
@ -367,14 +377,27 @@ export class DashboardComponent implements OnInit {
} }
goToUpload(tenderId){ goToUpload(tenderId){
this.paymentCheck()
if(!this.amountPaid){
this._ui.toastMessage(this.errorService.translate("pleasePayTheAmountForUpload"), 2000);
}else this._masterService.getMasterDatabyId(apiUrl.UserUploadCheck,`${this.userId}/${tenderId}`).then((res)=> {
// console.log("UPLOAD DATA", res);
if (res && res.length > 0) {
// console.log("Data already uploaded.");
this._ui.toastMessage(this.errorService.translate('DocumentsAlreadyUploaded'), 3000);
} else {
this.router.navigate(['/tender-upload',tenderId]); this.router.navigate(['/tender-upload',tenderId]);
} }
}).catch((error) => {
console.error("Error fetching upload data:", error);
});
//
}
goToEdit(tenderId){ goToEdit(tenderId){
this.router.navigate(['/add-tenders',tenderId]); this.router.navigate(['/add-tenders',tenderId]);
} }

@ -4,7 +4,7 @@ import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
@Component({ @Component({
selector: 'app-dialog-component', selector: 'app-dialog-component',
template: ` template: `
<h2 mat-dialog-title>Terms and Conditions</h2> <h2 mat-dialog-title>Declaration:</h2>
<mat-dialog-content> <mat-dialog-content>
<ul> <ul>
<li *ngFor="let detail of details">{{ detail }}</li> <li *ngFor="let detail of details">{{ detail }}</li>

@ -68,6 +68,7 @@ export class HomeUploadComponent implements OnInit {
@ViewChild('bidAmountInput') bidAmountInput: ElementRef; @ViewChild('bidAmountInput') bidAmountInput: ElementRef;
amountPaid: boolean = false; amountPaid: boolean = false;
OnlinePayment: boolean;
constructor( constructor(
private router: Router, private router: Router,
@ -110,8 +111,7 @@ export class HomeUploadComponent implements OnInit {
width: '500px', width: '500px',
data: { data: {
details: [ details: [
'I have thoroughly read and understood all the details provided on the official website of Thrickodithanam SCB related to the tendering process.', 'I hereby declare that I have read and understood the trended documents, terms and conditions, drawings and specifications. The rates quoted are based on all the necessary understanding of the site conditions and challenges to carry out the work. The rates are the best I could offer and is inclusive of all taxes and levies.',
'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.'
] ]
} }
}); });
@ -125,7 +125,7 @@ export class HomeUploadComponent implements OnInit {
paymentCheck(){ paymentCheck(){
this._masterService.getMasterDatabyId(apiUrl.paymentCheck, `${this.userId}/${this.tenderId}`).then(res => { this._masterService.getMasterDatabyId(apiUrl.paymentCheck, `${this.userId}/${this.tenderId}`).then(res => {
console.log('pay res=>', res); // console.log('pay res=>', res);
if (res.length >0 && res[0].transId && res[0].transId != null && res[0].transId != undefined) { if (res.length >0 && res[0].transId && res[0].transId != null && res[0].transId != undefined) {
this.amountPaid = true this.amountPaid = true
@ -140,18 +140,23 @@ export class HomeUploadComponent implements OnInit {
this.loading = false; this.loading = false;
this.tenderData = res; this.tenderData = res;
if(this.tenderData.paymentModeD.paymentMode == 'Online'){
this.OnlinePayment = true
}else {
this.OnlinePayment = false;
}
this.DEFAULT_COVER_COUNT = this.tenderData?.covers.length; // Replace with the actual number of rows this.DEFAULT_COVER_COUNT = this.tenderData?.covers.length; // Replace with the actual number of rows
this.initialSelectionStatus = new Array(this.DEFAULT_COVER_COUNT).fill(false); this.initialSelectionStatus = new Array(this.DEFAULT_COVER_COUNT).fill(false);
this.fileSelected = [...this.initialSelectionStatus]; this.fileSelected = [...this.initialSelectionStatus];
console.log('file---',this.fileSelected); // console.log('file---',this.fileSelected);
this.UploadedFile = []; this.UploadedFile = [];
for(let i=0;i<this.tenderData?.covers.length;i++){ for(let i=0;i<this.tenderData?.covers.length;i++){
this.UploadedFile.push(new TenderDocumentDto()); this.UploadedFile.push(new TenderDocumentDto());
} }
console.log('org Date==',this.tenderData.bidOpenDate); // console.log('org Date==',this.tenderData.bidOpenDate);
const dateObj = new Date(this.tenderData.bidOpenDate); const dateObj = new Date(this.tenderData.bidOpenDate);
const bidOpenDate = this.datePipe.transform(dateObj, 'MMM d, y, h:mm:ss a'); const bidOpenDate = this.datePipe.transform(dateObj, 'MMM d, y, h:mm:ss a');
@ -162,7 +167,7 @@ export class HomeUploadComponent implements OnInit {
email:this.userEmail email:this.userEmail
} }
console.log('email===>',this.emailBody); // console.log('email===>',this.emailBody);
}) })
} }
@ -170,7 +175,7 @@ export class HomeUploadComponent implements OnInit {
getFileFormatLov() { getFileFormatLov() {
this._masterService.getMasterData(apiUrl.fileFormat).then((res) => { this._masterService.getMasterData(apiUrl.fileFormat).then((res) => {
this.fileFormat = res this.fileFormat = res
console.log('this.fileFormat===', this.fileFormat); //console.log('this.fileFormat===', this.fileFormat);
}) })
} }
@ -201,7 +206,7 @@ export class HomeUploadComponent implements OnInit {
this.UploadedFile[i].documentCategory = 'USERD'; this.UploadedFile[i].documentCategory = 'USERD';
this.UploadedFile[i].tenderId = this.tenderId; this.UploadedFile[i].tenderId = this.tenderId;
this.UploadedFile[i].userId = this.userId; this.UploadedFile[i].userId = this.userId;
console.log('this.UploadedFile========',this.UploadedFile); // console.log('this.UploadedFile========',this.UploadedFile);
}) })
} }
@ -263,7 +268,7 @@ export class HomeUploadComponent implements OnInit {
submit() { submit() {
if(!this.amountPaid){ if(!this.amountPaid && this.OnlinePayment){
this._ui.toastMessage(this._errorTranslate.translate("pleasePayTheAmountForUpload"), 2000); this._ui.toastMessage(this._errorTranslate.translate("pleasePayTheAmountForUpload"), 2000);
return return
} }
@ -283,34 +288,39 @@ export class HomeUploadComponent implements OnInit {
let body= { let body= {
bidAmount:this.bidAmount bidAmount:this.bidAmount
} }
this._masterService.postMasterData(apiUrl.UploadBidAmount,body,`${this.userId}/${this.tenderId}`).then((res)=>{ // this._masterService.postMasterData(apiUrl.UploadBidAmount,body,`${this.userId}/${this.tenderId}`).then((res)=>{
console.log(res); // // console.log(res);
const body={email:this.userEmail} // const body={email:this.userEmail}
this._masterService.saveMasterData(apiUrl.UploadBidAmount,this.emailBody).then(res=>{ // this._masterService.saveMasterData(apiUrl.UploadBidAmount,this.emailBody).then(res=>{
console.log(res); // // console.log(res);
},err=>{ // },err=>{
console.error(err); // console.error(err);
}) // })
},err=>{ // },err=>{
console.error(err); // console.error(err);
}) // })
//console.log('this.tenderId========',body); //console.log('this.tenderId========',body);
// console.log('this.userId========',this.userId); // console.log('this.userId========',this.userId);
Swal.fire({ Swal.fire({
title: 'Are you sure?', title: 'Are you sure you want to submit?',
text: "You won't be able to edit this!", text: "Once submitted, document cannot be uploaded again",
icon: 'warning', icon: 'warning',
showCancelButton: true, showCancelButton: true,
confirmButtonColor: '#3085d6', confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33', cancelButtonColor: '#d33',
confirmButtonText: 'Yes, save it!' confirmButtonText: 'Yes, save it!'
}).then((result) => { }).then((result) => {
if (result.isConfirmed) {
if (result.isConfirmed) {
this._masterService.postMasterData(apiUrl.UploadBidAmount,body,`${this.userId}/${this.tenderId}`).then((res)=>{
const body={email:this.userEmail}
this._masterService.saveMasterData(apiUrl.emailUserSubmit,this.emailBody).then(res=>{
this._masterService.saveAllMasterData(apiUrl.tenderDoc, this.UploadedFile).then(res => { this._masterService.saveAllMasterData(apiUrl.tenderDoc, this.UploadedFile).then(res => {
console.log('res===upload====', res); // console.log('res===upload====', res);
Swal.fire( Swal.fire(
'Success', 'Success',
'Documents submitted successfully', 'Documents submitted successfully',
@ -325,6 +335,10 @@ export class HomeUploadComponent implements OnInit {
}) })
}) })
});
});
} }
}) })
@ -337,7 +351,7 @@ export class HomeUploadComponent implements OnInit {
// inputField.value = ''; // inputField.value = '';
// } // }
this._masterService.deleteMasterData(apiUrl.fileDelete + '/' + this.tenderId + '/' + this.userId, this.tenderData.covers[i].file).then(res => { this._masterService.deleteMasterData(apiUrl.fileDelete + '/' + this.tenderId + '/' + this.userId, this.tenderData.covers[i].file).then(res => {
console.log('delete===', res); // console.log('delete===', res);
this.tenderData.covers[i].file = ''; this.tenderData.covers[i].file = '';
this.fileSelected[i] = false; this.fileSelected[i] = false;
this.UploadedFile[i].docName = null this.UploadedFile[i].docName = null

@ -131,7 +131,7 @@
</tr> </tr>
<tr class="hide-on-print"> <tr class="hide-on-print">
<!-- <th>Fee Payable At</th> --> <!-- <th>Fee Payable At</th> -->
<th colspan="2"> <button class="float-right hide-on-print payButton" *ngIf="!amountPaid && seculevel != 'B'" mat-raised-button (click)="paymentGateway()">Pay Tender Fee</button></th> <th colspan="2"> <button class="float-right hide-on-print payButton" *ngIf="!amountPaid && seculevel != 'B' && OnlinePayment" mat-raised-button (click)="paymentGateway()">Pay Tender Fee</button></th>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@ -270,6 +270,10 @@
<th>Bid Opening Place</th> <th>Bid Opening Place</th>
<td>{{tenderData.bidOpeningPlace}}</td> <td>{{tenderData.bidOpeningPlace}}</td>
</tr> </tr>
<tr>
<th>Bid Opening Address</th>
<td>{{tenderData.bidOpenAddress}}</td>
</tr>
<tr> <tr>
<th>Pre Bid Meeting Place</th> <th>Pre Bid Meeting Place</th>
<td>{{tenderData.preBidMeetPlace}}</td> <td>{{tenderData.preBidMeetPlace}}</td>
@ -280,7 +284,7 @@
</tr> </tr>
<tr> <tr>
<th>Pre Bid Meeting Date</th> <th>Pre Bid Meeting Date</th>
<td>{{tenderData.preBidDate | date: 'MMM d, y, h:mm:ss a'}}</td> <td>{{tenderData.preBidDate | date: 'MMM d, y'}}</td>
</tr> </tr>
<!-- <tr> <!-- <tr>
@ -345,7 +349,7 @@
</tr> </tr>
<tr class="hide-on-print"> <tr class="hide-on-print">
<th colspan="12"><button mat-raised-button id="zipFile" (click)="downloadWITZip()" class=" DownloadZipButton hide-on-print" <th colspan="12"><button *ngIf="showDownloadButton" mat-raised-button id="zipFile" (click)="downloadWITZip()" class=" DownloadZipButton hide-on-print"
> <i class="bi bi-file-earmark-zip"></i> Download as Zip File</button> > <i class="bi bi-file-earmark-zip"></i> Download as Zip File</button>
</th> </th>
@ -377,7 +381,7 @@
<tr class="hide-on-print"> <tr class="hide-on-print">
<th colspan="12">Description<button mat-raised-button id="zipFile" class="DownloadZipButton hide-on-print" <th colspan="12">Description<button *ngIf="showDownloadButton" mat-raised-button id="zipFile" class="DownloadZipButton hide-on-print"
(click)="DownloadDrawingsZIP()" > <i class="bi bi-file-earmark-zip"></i> Download as Zip (click)="DownloadDrawingsZIP()" > <i class="bi bi-file-earmark-zip"></i> Download as Zip
File</button> </th> File</button> </th>

@ -21,11 +21,11 @@ export class HomeViewComponent implements OnInit {
tenderData: any; tenderData: any;
nitItemDocuments: any; nitItemDocuments: any[] = [];
workItemDocuments: any; workItemDocuments: any[] = [];
drawingsDocuments: any; drawingsDocuments: any[] = [];
tenderDocuments: any; tenderDocuments: any;
@ -48,6 +48,8 @@ export class HomeViewComponent implements OnInit {
seculevel: string; seculevel: string;
displayedColumns: string[] = ['field', 'value']; displayedColumns: string[] = ['field', 'value'];
OnlinePayment: boolean;
showDownloadButton: boolean;
constructor( constructor(
@ -68,7 +70,7 @@ export class HomeViewComponent implements OnInit {
this.userId = localStorage.getItem('userId') this.userId = localStorage.getItem('userId')
this.seculevel = localStorage.getItem('seculevel') this.seculevel = localStorage.getItem('seculevel')
console.log("this.seculevel", this.seculevel); // console.log("this.seculevel", this.seculevel);
this.enableDownload = true; this.enableDownload = true;
this.getData(); this.getData();
this.getPaymentData(); this.getPaymentData();
@ -82,21 +84,31 @@ export class HomeViewComponent implements OnInit {
getData() { getData() {
let newDate = new Date();
this._masterService.getMasterDatabyId(apiUrl.AllTenderData, this.tenderId).then((res) => { this._masterService.getMasterDatabyId(apiUrl.AllTenderData, this.tenderId).then((res) => {
console.log("tenderData", res);
this.tenderData = res this.tenderData = res
this.tenderDocuments = this.tenderData['tenderDoc'] this.tenderDocuments = this.tenderData['tenderDoc']
console.log("data", this.tenderDocuments);
// console.log("paymentModeD",res.paymentModeD.paymentMode);
if(this.tenderData.paymentModeD.paymentMode == 'Online'){
this.OnlinePayment = true
}else {
this.OnlinePayment = false;
}
const saleStartDate = new Date(this.tenderData.saleStartDate); const saleStartDate = new Date(this.tenderData.saleStartDate);
const saleEndDate = new Date(this.tenderData.saleEndDate); const saleEndDate = new Date(this.tenderData.saleEndDate);
if (this.currentDate >= saleStartDate && this.currentDate <= saleEndDate) { if (this.currentDate >= saleStartDate && this.currentDate <= saleEndDate) {
this.enableDownload = false; // Enable the button this.showDownloadButton = true; // Enable the button
console.log("enabled");
} else { } else {
this.enableDownload = true; // Disable the button this.showDownloadButton = false; // Disable the button
console.log("disabled");
} }
@ -107,18 +119,19 @@ export class HomeViewComponent implements OnInit {
getPaymentData() { getPaymentData() {
this._masterService.getMasterDatabyId(apiUrl.paymentCheck, `${this.userId}/${this.tenderId}`).then(res => {
console.log('pay res=>', res);
// if(this.OnlinePayment){
// console.log("this.online");
this._masterService.getMasterDatabyId(apiUrl.paymentCheck, `${this.userId}/${this.tenderId}`).then(res => {
if (res.length >0 && res[0].transId && res[0].transId != null && res[0].transId != undefined) { if (res.length >0 && res[0].transId && res[0].transId != null && res[0].transId != undefined) {
this.amountPaid = true this.amountPaid = true
} }})
// else{
// this.amountPaid = false //}
// }
})
} }
print(): void { print(): void {
window.print(); window.print();
} }
@ -142,7 +155,7 @@ export class HomeViewComponent implements OnInit {
} }
DownloadDrawingsZIP() { DownloadDrawingsZIP() {
if (!this.amountPaid && this.seculevel == 'U') { if (!this.amountPaid && this.seculevel == 'U' && this.OnlinePayment) {
// Scroll to the "Pay" button // Scroll to the "Pay" button
var payButton = document.getElementById("headingBreak"); var payButton = document.getElementById("headingBreak");
if (payButton) { if (payButton) {
@ -163,7 +176,7 @@ export class HomeViewComponent implements OnInit {
let newWindow = window.open(`${environment.apiUrl}/${apiUrl.drawingsDownloadDocs}/${id}`); let newWindow = window.open(`${environment.apiUrl}/${apiUrl.drawingsDownloadDocs}/${id}`);
setTimeout(() => { setTimeout(() => {
newWindow.close(); newWindow.close();
}, 10000); }, 100);
} }
if (err.status == 404) { if (err.status == 404) {
alert('No Bank Document Found for the selected Tender.'); alert('No Bank Document Found for the selected Tender.');
@ -194,16 +207,16 @@ export class HomeViewComponent implements OnInit {
// } // }
DownloadNIT(index: number) { DownloadNIT(index: number) {
const id = this.tenderId; const id = this.tenderId;
console.log(index); // console.log(index);
console.log(this.nitItemDocuments[index].docName); // console.log(this.nitItemDocuments[index].docName);
this._masterService.getMasterDatabyId(apiUrl.noticeDownlaod, `${this.tenderId}/${this.nitItemDocuments[index].docName}`).then((res) => { this._masterService.getMasterDatabyId(apiUrl.noticeDownlaod, `${this.tenderId}/${this.nitItemDocuments[index].docName}`).then((res) => {
} , err => { } , err => {
console.log('res===>', err); // console.log('res===>', err);
if (err.status == 200) { if (err.status == 200) {
console.log('start >>>'); // console.log('start >>>');
// window.open(`${environment.apiUrl}/${apiUrl.bankDocs}/${id}`); // window.open(`${environment.apiUrl}/${apiUrl.bankDocs}/${id}`);
let newWindow = window.open(`${environment.apiUrl}/${apiUrl.noticeDownlaod}/${this.tenderId}/${this.nitItemDocuments[index].docName}`); let newWindow = window.open(`${environment.apiUrl}/${apiUrl.noticeDownlaod}/${this.tenderId}/${this.nitItemDocuments[index].docName}`);
// setTimeout(() => { // setTimeout(() => {
@ -230,7 +243,7 @@ export class HomeViewComponent implements OnInit {
downloadWITZip() { downloadWITZip() {
if (!this.amountPaid && this.seculevel == 'U') { if (!this.amountPaid && this.seculevel == 'U' && this.OnlinePayment) {
// Scroll to the "Pay" button // Scroll to the "Pay" button
var payButton = document.getElementById("headingBreak"); var payButton = document.getElementById("headingBreak");
if (payButton) { if (payButton) {
@ -240,7 +253,7 @@ export class HomeViewComponent implements OnInit {
} }
else { else {
console.log('clicked'); // console.log('clicked');
const id = this.tenderId; const id = this.tenderId;
// let newWindow = window.open(`${environment.apiUrl}/${apiUrl.bankDocs}/${id}`); // let newWindow = window.open(`${environment.apiUrl}/${apiUrl.bankDocs}/${id}`);
// setTimeout(() => { // setTimeout(() => {
@ -293,7 +306,7 @@ export class HomeViewComponent implements OnInit {
// let paymentMethod = this.paymentMethodLovData.find(x=> x.id==this.newPaymentRow.paymentMethod) // let paymentMethod = this.paymentMethodLovData.find(x=> x.id==this.newPaymentRow.paymentMethod)
console.log('this.paymentDetails===', this.paymentDetails); // console.log('this.paymentDetails===', this.paymentDetails);
this._transactionService.createPayment(this.paymentDetails).then( this._transactionService.createPayment(this.paymentDetails).then(
res => { res => {
@ -301,7 +314,7 @@ export class HomeViewComponent implements OnInit {
}, },
err => { err => {
this.onFailurePayment(err); this.onFailurePayment(err);
console.log("==er====", err); // console.log("==er====", err);
} }
); );
// } // }
@ -316,7 +329,7 @@ export class HomeViewComponent implements OnInit {
} }
onFailurePayment(err) { onFailurePayment(err) {
console.log('Failure Payment : ' + err); // console.log('Failure Payment : ' + err);
this._ui.toastMessage(err.message ? err.message : this._errorTranslateService.translate('errInSave'), 3000); this._ui.toastMessage(err.message ? err.message : this._errorTranslateService.translate('errInSave'), 3000);
} }

@ -1,30 +1,5 @@
<!-- -->
<!-- <div class="row" id="Headerbutton">
<div class="col-6 col-sm-6 col-md-6 col-lg-6 col-xl-6">
<button mat-raised-button color="primary" (click)="backButton()"
style="float: left;margin-top: 5px;margin-bottom: 5px;background-color: #46AC9E;">
Back
</button>
</div>
<div class="col-6 col-sm-6 col-md-6 col-lg-6 col-xl-6">
<button mat-raised-button color="primary" (click)="printScreen()"
style="float: right;margin-top: 5px;margin-bottom: 5px;background-color: #46AC9E;">
Print
</button>
<button mat-raised-button color="primary" (click)="excelDownload()"
style="float: right;margin-top: 5px;margin-bottom: 5px;margin-right: 5px;background-color: #46AC9E;">
Excel Download
</button>
</div>
</div> -->
<div class="buttonCard"> <div class="buttonCard">
<button mat-stroked-button (click)="backButton()" class="backButton"> <button mat-stroked-button (click)="backButton()" class="backButton">
<i class="fa fa-arrow-left" aria-hidden="true" <i class="fa fa-arrow-left" aria-hidden="true"
@ -39,89 +14,19 @@
<button mat-stroked-button (click)="excelDownload()" class="excelButton"> <button mat-stroked-button (click)="excelDownload()" class="excelButton">
Excel Excel
</button> </button>
</div>
<div id="section-to-print" class="container" style="background-color: white;">
<!-- <div class="outerContainer"> -->
<!-- <h6 style="width: calc(100vw - 50px);margin-top: 18px;">
<b>
<span class="titleSpan">{{title | translate}}</span>
<br>
<div class="row" >
<span class="tenderInfo">Tender Information:</span>
</div>
<div class="row" >
<div class="col-6 col-sm-6 col-md-6 col-lg-6 col-xl-6" id="tenderNameDiv">
<span class="tenderName">
<br>
{{'tender'|translate}} :
<span>
{{headerData?.title}}
</span>
</span>
</div>
<div class="col-6 col-sm-6 col-md-6 col-lg-6 col-xl-6" id="publishingDateDiv">
<span class="publishingDate">
<br>
{{'publishedDate'|translate}} :
<span>
{{headerData?.publishDate | date: 'MMM d, y, h:mm:ss a'}}
</span>
</span>
</div>
</div>
<div class="row" >
<div class="col-6 col-sm-6 col-md-6 col-lg-6 col-xl-6" id="tenderNameDiv">
<span class="tenderName">
<br>
{{'tenderId'|translate}} :
<span>
{{tenderInputId}}
</span>
</span>
</div>
<div class="col-6 col-sm-6 col-md-6 col-lg-6 col-xl-6" id="publishingDateDiv"> <button mat-stroked-button (click)="sendMail()" class="excelButton">
<span class="publishingDate"> <!-- <svg *ngIf="headerData?.sendReport != 'Y'" xmlns="http://www.w3.org/2000/svg" style="height: 50%;" height="1em" viewBox="0 0 512 512"><path d="M64 112c-8.8 0-16 7.2-16 16v22.1L220.5 291.7c20.7 17 50.4 17 71.1 0L464 150.1V128c0-8.8-7.2-16-16-16H64zM48 212.2V384c0 8.8 7.2 16 16 16H448c8.8 0 16-7.2 16-16V212.2L322 328.8c-38.4 31.5-93.7 31.5-132 0L48 212.2zM0 128C0 92.7 28.7 64 64 64H448c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128z" fill="#424242"/></svg> -->
<svg *ngIf="headerData?.sendReport != 'Y'" xmlns="http://www.w3.org/2000/svg" style="height: 45%;" height="1em" viewBox="0 0 512 512"><path d="M16.1 260.2c-22.6 12.9-20.5 47.3 3.6 57.3L160 376V479.3c0 18.1 14.6 32.7 32.7 32.7c9.7 0 18.9-4.3 25.1-11.8l62-74.3 123.9 51.6c18.9 7.9 40.8-4.5 43.9-24.7l64-416c1.9-12.1-3.4-24.3-13.5-31.2s-23.3-7.5-34-1.4l-448 256zm52.1 25.5L409.7 90.6 190.1 336l1.2 1L68.2 285.7zM403.3 425.4L236.7 355.9 450.8 116.6 403.3 425.4z" fill="#424242"/></svg>
<br> <svg *ngIf="headerData?.sendReport == 'Y'" xmlns="http://www.w3.org/2000/svg" height="1em" style="height: 50%;" viewBox="0 0 640 512"><path d="M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0l57.4-43c23.9-59.8 79.7-103.3 146.3-109.8l13.9-10.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176V384c0 35.3 28.7 64 64 64H360.2C335.1 417.6 320 378.5 320 336c0-5.6 .3-11.1 .8-16.6l-26.4 19.8zM640 336a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 353.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z" fill="#424242"/></svg>
{{'bidOpenDate'|translate}} : <!-- <svg *ngIf="headerData?.sendReport == 'Y'" xmlns="http://www.w3.org/2000/svg" height="1em" style="height: 50%;" viewBox="0 0 448 512"><path d="M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z" fill="#424242"/></svg> -->
<span> Mail
{{headerData?.bidOpenDate | date: 'MMM d, y, h:mm:ss a'}} </button>
</span>
</span>
</div>
</div>
<br>
<div class="row" >
<div class="col-6 col-sm-6 col-md-6 col-lg-6 col-xl-6" id="tenderNameDiv">
<span class="tenderName">
<br>
<span class="bidComparison">
Bid Comparison:
</span>
</span>
</div>
<div class="col-6 col-sm-6 col-md-6 col-lg-6 col-xl-6" id="publishingDateDiv">
</div>
</div> </div>
<div id="section-to-print" class="container" style="background-color: white;">
</b>
</h6> -->
<!-- <hr class="hiddenLine"> -->
<!-- <h6>{{'currentDate'|translate}}: {{today | date: 'MMM d, y, h:mm:ss a'}}</h6> -->
<!-- <h6>{{tenderInputId}}</h6> -->
@ -156,7 +61,6 @@
</div> </div>
<!-- <br> -->
<div class="row" style="margin-top: 5px;"> <div class="row" style="margin-top: 5px;">
<div class="col-6 col-sm-6 col-md-6 col-lg-6 col-xl-6"> <div class="col-6 col-sm-6 col-md-6 col-lg-6 col-xl-6">
<span class="subHead"> <span class="subHead">
@ -215,34 +119,12 @@
</td> </td>
</tr> </tr>
<!-- <tr>
<td></td>
<td>Bid Open Date</td>
<td>
{{headerData?.sectionName}}
</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td>Current Date: </td>
<td>
{{today | date: 'dd MMMM YYYY'}}
</td>
<td></td>
</tr> -->
<tr></tr> <tr></tr>
</table> </table>
<div class="table-responsive">
<mat-table mat-table [dataSource]="dataSource" class="mat-elevation-z8" matSort matSortDisableClear="true" <mat-table mat-table [dataSource]="dataSource" class="mat-elevation-z8" matSort matSortDisableClear="true"
(matSortChange)="sortData($event)"> (matSortChange)="sortData($event)">
@ -263,7 +145,6 @@
class="table-headers"> class="table-headers">
<div> <div>
{{'name'|translate}} {{'name'|translate}}
<!-- <mat-icon>sort</mat-icon> -->
</div> </div>
</th> </th>
<td mat-cell *matCellDef="let element" class="table-content"> <td mat-cell *matCellDef="let element" class="table-content">
@ -276,7 +157,6 @@
<th mat-header-cell mat-sort-header *matHeaderCellDef style="text-align: center;" class="table-headers"> <th mat-header-cell mat-sort-header *matHeaderCellDef style="text-align: center;" class="table-headers">
<div> <div>
{{'admissionNo'|translate}} {{'admissionNo'|translate}}
<!-- <mat-icon>sort</mat-icon> -->
</div> </div>
</th> </th>
<td mat-cell *matCellDef="let element" class="table-content"> <td mat-cell *matCellDef="let element" class="table-content">
@ -292,7 +172,6 @@
class="table-headers"> class="table-headers">
<div> <div>
{{'mobileNumber'|translate}} {{'mobileNumber'|translate}}
<!-- <mat-icon>sort</mat-icon> -->
</div> </div>
</th> </th>
<td mat-cell *matCellDef="let element" class="table-content"> <td mat-cell *matCellDef="let element" class="table-content">
@ -305,7 +184,6 @@
<th mat-header-cell mat-sort-header *matHeaderCellDef style="text-align: center;" class="table-headers"> <th mat-header-cell mat-sort-header *matHeaderCellDef style="text-align: center;" class="table-headers">
<div> <div>
{{'emailId'|translate}} {{'emailId'|translate}}
<!-- <mat-icon>sort</mat-icon> -->
</div> </div>
</th> </th>
<td mat-cell *matCellDef="let element" class="table-content"> <td mat-cell *matCellDef="let element" class="table-content">
@ -320,7 +198,6 @@
<th mat-header-cell mat-sort-header *matHeaderCellDef style="text-align: center;" class="table-headers"> <th mat-header-cell mat-sort-header *matHeaderCellDef style="text-align: center;" class="table-headers">
<div> <div>
{{'totalBidAmount'|translate}} {{'totalBidAmount'|translate}}
<!-- <mat-icon>sort</mat-icon> -->
</div> </div>
</th> </th>
<td mat-cell *matCellDef="let element" class="table-content"> <td mat-cell *matCellDef="let element" class="table-content">
@ -335,15 +212,15 @@
<th mat-header-cell *matHeaderCellDef style="text-align: center;width:150px" class="table-headers"> <th mat-header-cell *matHeaderCellDef style="text-align: center;width:150px" class="table-headers">
<div> <div>
{{'documents'|translate}} {{'documents'|translate}}
<!-- <mat-icon>sort</mat-icon> -->
</div> </div>
</th> </th>
<td mat-cell *matCellDef="let element" class="table-content" style="text-align: center;"> <td mat-cell *matCellDef="let element" class="table-content" style="text-align: center;">
<!-- <button mat-stroked-button (click)="downloadUserDocs(element?.userId)">
<mat-icon style="color: #4a4a4a;">file_download</mat-icon></button> -->
<button mat-stroked-button (click)="openDialogBox(captcha,element?.userId)">
<mat-icon style="color: #4a4a4a;">file_download</mat-icon></button> <button mat-button (click)="openDialogBox(captcha,element?.userId)">
<!-- <mat-icon style="color: #4a4a4a;">file_download</mat-icon> -->
<svg xmlns="http://www.w3.org/2000/svg" height="1.7em" viewBox="0 0 512 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M256 464a208 208 0 1 1 0-416 208 208 0 1 1 0 416zM256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM376.9 294.6c4.5-4.2 7.1-10.1 7.1-16.3c0-12.3-10-22.3-22.3-22.3H304V160c0-17.7-14.3-32-32-32l-32 0c-17.7 0-32 14.3-32 32v96H150.3C138 256 128 266 128 278.3c0 6.2 2.6 12.1 7.1 16.3l107.1 99.9c3.8 3.5 8.7 5.5 13.8 5.5s10.1-2 13.8-5.5l107.1-99.9z" fill="#555555"/></svg>
</button>
</td> </td>
</ng-container> </ng-container>
@ -354,11 +231,11 @@
<tr mat-row *matRowDef="let row; columns: displaycolumns;"></tr> <tr mat-row *matRowDef="let row; columns: displaycolumns;"></tr>
</mat-table> </mat-table>
</div>
</div> </div>
<!-- </div> -->
</div> </div>

@ -394,3 +394,7 @@ input {
0% { transform: rotate(0deg); } 0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); } 100% { transform: rotate(360deg); }
} }
.table-responsive {
overflow-x: scroll;
}

@ -4,7 +4,9 @@ import { MatSort, Sort } from '@angular/material/sort';
import { MatTableDataSource } from '@angular/material/table'; import { MatTableDataSource } from '@angular/material/table';
import { ActivatedRoute, Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
import { apiUrl } from 'src/app/_providers/_resources/api-url.properties'; 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 { MasterService } from 'src/app/_providers/_services/master.service';
import { UiService } from 'src/app/_providers/_services/ui.service';
import { environment } from 'src/environments/environment.prod'; import { environment } from 'src/environments/environment.prod';
import * as XLSX from 'xlsx'; import * as XLSX from 'xlsx';
@Component({ @Component({
@ -53,7 +55,9 @@ export class BidFinalReportComponent implements OnInit {
private route: ActivatedRoute, private route: ActivatedRoute,
private _router: Router, private _router: Router,
private _masterService: MasterService, private _masterService: MasterService,
private dialog: MatDialog private dialog: MatDialog,
private _ui:UiService,
private _errorService:ErrorTranslateService
) { ) {
this.tenderId = +this.route.snapshot.paramMap.get('id'); this.tenderId = +this.route.snapshot.paramMap.get('id');
@ -83,7 +87,7 @@ export class BidFinalReportComponent implements OnInit {
getTableData(id) { getTableData(id) {
this._masterService.getMasterDatabyId(apiUrl.bidReport, id).then(res => { this._masterService.getMasterDatabyId(apiUrl.bidReport, id).then(res => {
this.tableData = res.filter(element => element.status == 'S'); this.tableData = res.filter(element => element.status == 'S' && element.finalBidAmt);
this.dataSource = new MatTableDataSource(this.tableData); this.dataSource = new MatTableDataSource(this.tableData);
this.dataSource.sort = this.sort; this.dataSource.sort = this.sort;
}) })
@ -196,6 +200,17 @@ export class BidFinalReportComponent implements OnInit {
} }
} }
sendMail(){
this._masterService.getMasterDatabyId(apiUrl.emailReport,this.tenderId).then(res=>{
this._ui.toastMessage(this._errorService.translate("emailSentSuccessfully"));
this.getHeaderData(this.tenderId)
},err=>{
this._ui.toastMessage(err.error.message);
this.getHeaderData(this.tenderId)
})
}
} }
function compare(a: any, b: any, isAsc: boolean): number { function compare(a: any, b: any, isAsc: boolean): number {
return (a < b ? -1 : 1) * (isAsc ? 1 : -1); return (a < b ? -1 : 1) * (isAsc ? 1 : -1);

@ -26,7 +26,7 @@ export class FormatDirective {
) { } ) { }
ngOnChanges(changes: SimpleChanges): void { ngOnChanges(changes: SimpleChanges): void {
console.log("===arg===", this.arg); // console.log("===arg===", this.arg);
this.format(this.ictFormat); this.format(this.ictFormat);
} }

@ -43,7 +43,9 @@ export const apiUrl = {
userBidDoc:"file-upload/user-doc-arc", userBidDoc:"file-upload/user-doc-arc",
UploadBidAmount:"payment-master/finalBidAmt", UploadBidAmount:"payment-master/finalBidAmt",
paymentCheck:"payment-master/bid-payment-check", paymentCheck:"payment-master/bid-payment-check",
emailUserSubmit:"auth/otp/UD" emailUserSubmit:"auth/otp/UD",
UserUploadCheck :"tender-doc/userDocCheck",
emailReport:"email/report"
}; };

@ -3,5 +3,5 @@ export const routePath = {
home:"/auth/admin-home", home:"/auth/admin-home",
login: "/auth/login", login: "/auth/login",
dashboard: "/dashboard", dashboard: "/dashboard",
website:"/auth/website"
}; };

@ -50,9 +50,9 @@ export class AuthService {
this.headers.append('emailid', param.username); this.headers.append('emailid', param.username);
return (this.http.post<TokenDto>(`${this.environment.apiUrl}/${apiUrl.login}`, param) return (this.http.post<TokenDto>(`${this.environment.apiUrl}/${apiUrl.login}`, param)
.pipe(map(user => { .pipe(map(user => {
console.log("=======user========", user) // console.log("=======user========", user)
if (user && user != null) { if (user && user != null) {
console.log("=======user======1==", user) // console.log("=======user======1==", user)
// if (user.accessToken) // if (user.accessToken)
this.currentUserSubject.next(user); this.currentUserSubject.next(user);
// else // else
@ -131,7 +131,7 @@ export class AuthService {
} }
async patchToken(): Promise<any> { async patchToken(): Promise<any> {
console.log(this.firebaseToken, 'firebase token'); // console.log(this.firebaseToken, 'firebase token');
return await this.http.patch<any>(`${this.environment.apiUrl}/${"user/firebase"}`, { token: this.firebaseToken }).toPromise(); return await this.http.patch<any>(`${this.environment.apiUrl}/${"user/firebase"}`, { token: this.firebaseToken }).toPromise();
} }

@ -83,7 +83,7 @@ export class MasterService {
}, },
err => { err => {
this.loading = false; this.loading = false;
console.log("----err----", err); // console.log("----err----", err);
this._uiService.toastMessage(err.error.message, 5000, true); this._uiService.toastMessage(err.error.message, 5000, true);
}); });
return data; return data;

@ -1,3 +1,3 @@
<app-header></app-header> <app-header *ngIf="!this.router.url.includes('website')"></app-header>
<router-outlet></router-outlet> <router-outlet></router-outlet>

@ -30,13 +30,12 @@ export class AppComponent implements OnInit, OnDestroy {
constructor( constructor(
private idle: Idle, private idle: Idle,
private router: Router, public router: Router,
private keepalive: Keepalive, private keepalive: Keepalive,
private configService: AppConfigService, private configService: AppConfigService,
private authenticationService: AuthService, private authenticationService: AuthService,
public dialog: MatDialog, public dialog: MatDialog,
public translate: TranslateService public translate: TranslateService,
) { ) {
translate.setDefaultLang('en-sales'); translate.setDefaultLang('en-sales');
translate.use('en-sales'); translate.use('en-sales');

@ -9,7 +9,7 @@
<!-- <img src="assets/img/user.png" alt="" class="img-fluid" style="height: 35px;transform: translateY(-5px);"> --> <!-- <img src="assets/img/user.png" alt="" class="img-fluid" style="height: 35px;transform: translateY(-5px);"> -->
<button *ngIf="secuLevel != 'B'" mat-mini-fab style="transform: translateY(-5px);background-color: #46AC9E;"> <button *ngIf="secuLevel != 'B'" mat-mini-fab style="transform: translateY(-5px);background-color: #46AC9E;">
{{username.charAt(0).toUpperCase()}} {{username?.charAt(0)?.toUpperCase()}}
</button> </button>
<button *ngIf="secuLevel == 'B'" class="adminButtom" mat-mini-fab > <button *ngIf="secuLevel == 'B'" class="adminButtom" mat-mini-fab >
@ -24,7 +24,7 @@
<!-- <img src="assets/img/user.png" alt="" *ngIf="!adminUser" class="img-fluid" style="height: 40px;"> <!-- <img src="assets/img/user.png" alt="" *ngIf="!adminUser" class="img-fluid" style="height: 40px;">
<img src="assets/img/admin.png" alt="" *ngIf="adminUser" class="img-fluid" style="height: 40px;"> --> <img src="assets/img/admin.png" alt="" *ngIf="adminUser" class="img-fluid" style="height: 40px;"> -->
<button mat-mini-fab style="transform: translateY(-5px);background-color: #46AC9E;box-shadow: none; pointer-events: none;"> <button mat-mini-fab style="transform: translateY(-5px);background-color: #46AC9E;box-shadow: none; pointer-events: none;">
{{username.charAt(0).toUpperCase()}} {{username?.charAt(0)?.toUpperCase()}}
</button> </button>
<!-- <img src="assets/img/user.svg" alt=""> --> <!-- <img src="assets/img/user.svg" alt=""> -->
</div> </div>

@ -25,7 +25,7 @@ export class UserComponent {
this.signOut.emit(); this.signOut.emit();
if(this._router.url == '/auth/login' || this._router.url == '/auth/admin-home') if(this._router.url == '/auth/login' || this._router.url == '/auth/admin-home')
this.signedOut = true this.signedOut = true
console.log('user==email======',this._router); // console.log('user==email======',this._router);
} }
constructor(public _router : Router){ constructor(public _router : Router){

@ -46,29 +46,31 @@ export class HeaderComponent {
} }
public signOut(): void { public signOut(): void {
console.log('hwwwwww'); // console.log('hwwwwww');
this.authenticationService.logOut(); this.authenticationService.logOut();
} }
goToWebsite(){ goToWebsite(){
window.location.href = 'https://www.thrickodithanamscb.in/index.html#hero'; this.authenticationService.logOut().then(res=>{
window.location.href = 'https://www.thrickodithanamscb.in/#/auth/website'
});
// window.location.href = 'https://www.thrickodithanamscb.in/index.html#hero';
} }
goToHome(currentLoc){ goToHome(currentLoc){
console.log('current Location = ',currentLoc); // console.log('current Location = ',currentLoc);
if(currentLoc.includes('auth')){ if(currentLoc.includes('auth')){
this.router.navigate(['/auth/admin-home']) this.router.navigate(['/auth/admin-home'])
} }
else{ else{
this.router.navigate(['/dashboard']) this.router.navigate(['/dashboard'])
} }
// if(currentLoc = '/dashboard'){
// this. goToWebsite()
// }
} }
goToSignIn(){ goToSignIn(){

@ -34,7 +34,7 @@ export class SidebarComponent {
this.model = this.getMenuCompact(this.menuData, "root"); this.model = this.getMenuCompact(this.menuData, "root");
}, },
(err) => { (err) => {
console.log("===err====", err); // console.log("===err====", err);
}); });
// const secuLevel = localStorage.getItem("seculevel"); // const secuLevel = localStorage.getItem("seculevel");
// if(secuLevel=="1" || secuLevel=="4"){ // if(secuLevel=="1" || secuLevel=="4"){

File diff suppressed because it is too large Load Diff

@ -110,6 +110,7 @@
"periodOfWorkCantBeBlank":"Period Of Work Can't Be Blank", "periodOfWorkCantBeBlank":"Period Of Work Can't Be Blank",
"preBidMeetingPlaceCantBeBlank":"Pre Bid Meeting Place Can't Be Blank", "preBidMeetingPlaceCantBeBlank":"Pre Bid Meeting Place Can't Be Blank",
"bidOpeningPlaceCantBeBlank":"Bid Opening Place Can't Be Blank", "bidOpeningPlaceCantBeBlank":"Bid Opening Place Can't Be Blank",
"bidOpenAddressCantBeBlank" :"Bid Opening Address Can't Be Blank",
"publishedDateCantBeBlank":"Published Date Can't Be Blank", "publishedDateCantBeBlank":"Published Date Can't Be Blank",
"documentDownloadSaleStartCantBeBlank":"Document Download / Sale Start Date Can't Be Blank", "documentDownloadSaleStartCantBeBlank":"Document Download / Sale Start Date Can't Be Blank",
"clarificationStartDateCantBeBlank":"Clarification Start Date Can't Be Blank", "clarificationStartDateCantBeBlank":"Clarification Start Date Can't Be Blank",
@ -139,7 +140,9 @@
"pleaseEnterBidFinalAmount":"Please Enter Bid Final Amount", "pleaseEnterBidFinalAmount":"Please Enter Bid Final Amount",
"pleaseLogin":"Please Login for Downloading", "pleaseLogin":"Please Login for Downloading",
"documentnamecantbesame": "Document Name Can't Be Same ", "documentnamecantbesame": "Document Name Can't Be Same ",
"DocumentsAlreadyUploaded" : "Documents Already Uploaded",
"pleaseAgreeToTheTermsandCondition":"Please Agree To The Terms and Condition", "pleaseAgreeToTheTermsandCondition":"Please Agree To The Terms and Condition",
"pleasePayTheAmountForDoc":"Please Pay The Amount For Downloading Documents" "pleasePayTheAmountForDoc":"Please Pay The Amount For Downloading Documents",
"emailSentSuccessfully":"Email Sent Successfully"
} }

@ -0,0 +1,264 @@
/**
* Template Name: Amoeba
* Updated: Mar 10 2023 with Bootstrap v5.2.3
* Template URL: https://bootstrapmade.com/free-one-page-bootstrap-template-amoeba/
* Author: BootstrapMade.com
* License: https://bootstrapmade.com/license/
*/
(async function() {
"use strict";
/**
* Easy selector helper function
*/
const select = (el, all = false) => {
el = el.trim()
if (all) {
return [...document.querySelectorAll(el)]
} else {
return document.querySelector(el)
}
}
/**
* Easy event listener function
*/
const on = (type, el, listener, all = false) => {
let selectEl = select(el, all)
if (selectEl) {
if (all) {
selectEl.forEach(e => e.addEventListener(type, listener))
} else {
selectEl.addEventListener(type, listener)
}
}
}
/**
* Easy on scroll event listener
*/
const onscroll = (el, listener) => {
el.addEventListener('scroll', listener)
}
/**
* Navbar links active state on scroll
*/
let navbarlinks = select('#navbar .scrollto', true)
const navbarlinksActive = () => {
let position = window.scrollY + 200
navbarlinks.forEach(navbarlink => {
if (!navbarlink.hash) return
let section = select(navbarlink.hash)
if (!section) return
if (position >= section.offsetTop && position <= (section.offsetTop + section.offsetHeight)) {
navbarlink.classList.add('active')
} else {
navbarlink.classList.remove('active')
}
})
}
window.addEventListener('load', navbarlinksActive)
onscroll(document, navbarlinksActive)
/**
* Scrolls to an element with header offset
*/
const scrollto = (el) => {
let header = select('#header')
let offset = header.offsetHeight
if (!header.classList.contains('header-scrolled')) {
offset -= 20
}
let elementPos = select(el).offsetTop
window.scrollTo({
top: elementPos - offset,
behavior: 'smooth'
})
}
/**
* Toggle .header-scrolled class to #header when page is scrolled
*/
let selectHeader = select('#header')
if (selectHeader) {
const headerScrolled = () => {
if (window.scrollY > 100) {
selectHeader.classList.add('header-scrolled')
} else {
selectHeader.classList.remove('header-scrolled')
}
}
window.addEventListener('load', headerScrolled)
onscroll(document, headerScrolled)
}
/**
* Back to top button
*/
let backtotop = select('.back-to-top')
if (backtotop) {
const toggleBacktotop = () => {
if (window.scrollY > 100) {
backtotop.classList.add('active')
} else {
backtotop.classList.remove('active')
}
}
window.addEventListener('load', toggleBacktotop)
onscroll(document, toggleBacktotop)
}
/**
* Mobile nav toggle
*/
on('click', '.mobile-nav-toggle', function(e) {
select('#navbar').classList.toggle('navbar-mobile')
this.classList.toggle('bi-list')
this.classList.toggle('bi-x')
})
/**
* Mobile nav dropdowns activate
*/
on('click', '.navbar .dropdown > a', function(e) {
if (select('#navbar').classList.contains('navbar-mobile')) {
e.preventDefault()
this.nextElementSibling.classList.toggle('dropdown-active')
}
}, true)
/**
* Scrool with ofset on links with a class name .scrollto
*/
on('click', '.scrollto', function(e) {
if (select(this.hash)) {
e.preventDefault()
let navbar = select('#navbar')
if (navbar.classList.contains('navbar-mobile')) {
navbar.classList.remove('navbar-mobile')
let navbarToggle = select('.mobile-nav-toggle')
navbarToggle.classList.toggle('bi-list')
navbarToggle.classList.toggle('bi-x')
}
scrollto(this.hash)
}
}, true)
/**
* Scroll with ofset on page load with hash links in the url
*/
window.addEventListener('load', () => {
if (window.location.hash) {
if (select(window.location.hash)) {
scrollto(window.location.hash)
}
}
});
// loading
const loader = document.querySelector("#loading");
// showing loading
function displayLoading() {
loader.classList.add("display");
// to stop loading after some time
// setTimeout(() => {
// loader.classList.remove("display");
// }, 5000);
}
// hiding loading
function hideLoading() {
loader.classList.remove("display");
}
// Submit button
document.querySelector('form').addEventListener('submit', async (event) => {
event.preventDefault(); // Prevent form submission from refreshing the page
displayLoading();
const form = event.target;
const formData = new FormData(form); // Create a FormData object to store form data
try {
// const response = await fetch('https://emailapi.thrickodithanamscb.in/email', {
const response = await fetch('http://localhost:3333/email', {
method: 'POST',
body: formData,
});
if (response.ok) {
response.json().then((data) => {
hideLoading()
alert('Form submitted successfully!')
form.reset(); // Clear form inputs after successful submission
console.log(data); // Handle the response data as needed
});
} else {
hideLoading()
alert('Error submitting form. Please try again.');
}
} catch (error) {
//error caused when sending large file because of server time limit reaches
//error shows but the email is send successfully
hideLoading()
alert('Form submitted successfully!');
}
});
//size validation and pdf selection
function addEventListenersToIds(ids, event, listener) {
ids.forEach(function (id) {
var element = document.getElementById(id);
element.addEventListener(event, listener);
});
}
var fileInputIds = ['TenderFile', 'PaymentFile'];
addEventListenersToIds(fileInputIds, 'change', checkfileformat);
// const fileInput = document.getElementById('TenderFile');
// fileInput.addEventListener('change', checkfileformat);
function checkfileformat(event) {
var fileInput = event.target;
var file = fileInput.files[0];
var size = file.size;
var fileName = file.name;
var fileExtension = fileName.split('.').pop().toLowerCase();
//var allowedFormats = ['pdf', 'zip'];
var allowedFormats = ['pdf'];
if (allowedFormats.indexOf(fileExtension) === -1) {
// alert("Only PDF and ZIP files are allowed.");
alert("Only PDF files are allowed.");
fileInput.value = '';
return false;
}
var maxSize = 5 * 1024 * 1024; // 5MB in bytes
if (size > maxSize) {
alert("File size exceeds the 5MB limit.");
fileInput.value = '';
return false;
}
// alert("File uploaded sucessfully.");
return true;
}
})()

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,488 @@
/*!
* Bootstrap Reboot v5.2.3 (https://getbootstrap.com/)
* Copyright 2011-2022 The Bootstrap Authors
* Copyright 2011-2022 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
:root {
--bs-blue: #0d6efd;
--bs-indigo: #6610f2;
--bs-purple: #6f42c1;
--bs-pink: #d63384;
--bs-red: #dc3545;
--bs-orange: #fd7e14;
--bs-yellow: #ffc107;
--bs-green: #198754;
--bs-teal: #20c997;
--bs-cyan: #0dcaf0;
--bs-black: #000;
--bs-white: #fff;
--bs-gray: #6c757d;
--bs-gray-dark: #343a40;
--bs-gray-100: #f8f9fa;
--bs-gray-200: #e9ecef;
--bs-gray-300: #dee2e6;
--bs-gray-400: #ced4da;
--bs-gray-500: #adb5bd;
--bs-gray-600: #6c757d;
--bs-gray-700: #495057;
--bs-gray-800: #343a40;
--bs-gray-900: #212529;
--bs-primary: #0d6efd;
--bs-secondary: #6c757d;
--bs-success: #198754;
--bs-info: #0dcaf0;
--bs-warning: #ffc107;
--bs-danger: #dc3545;
--bs-light: #f8f9fa;
--bs-dark: #212529;
--bs-primary-rgb: 13, 110, 253;
--bs-secondary-rgb: 108, 117, 125;
--bs-success-rgb: 25, 135, 84;
--bs-info-rgb: 13, 202, 240;
--bs-warning-rgb: 255, 193, 7;
--bs-danger-rgb: 220, 53, 69;
--bs-light-rgb: 248, 249, 250;
--bs-dark-rgb: 33, 37, 41;
--bs-white-rgb: 255, 255, 255;
--bs-black-rgb: 0, 0, 0;
--bs-body-color-rgb: 33, 37, 41;
--bs-body-bg-rgb: 255, 255, 255;
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
--bs-body-font-family: var(--bs-font-sans-serif);
--bs-body-font-size: 1rem;
--bs-body-font-weight: 400;
--bs-body-line-height: 1.5;
--bs-body-color: #212529;
--bs-body-bg: #fff;
--bs-border-width: 1px;
--bs-border-style: solid;
--bs-border-color: #dee2e6;
--bs-border-color-translucent: rgba(0, 0, 0, 0.175);
--bs-border-radius: 0.375rem;
--bs-border-radius-sm: 0.25rem;
--bs-border-radius-lg: 0.5rem;
--bs-border-radius-xl: 1rem;
--bs-border-radius-2xl: 2rem;
--bs-border-radius-pill: 50rem;
--bs-link-color: #0d6efd;
--bs-link-hover-color: #0a58ca;
--bs-code-color: #d63384;
--bs-highlight-bg: #fff3cd;
}
*,
*::before,
*::after {
box-sizing: border-box;
}
@media (prefers-reduced-motion: no-preference) {
:root {
scroll-behavior: smooth;
}
}
body {
margin: 0;
font-family: var(--bs-body-font-family);
font-size: var(--bs-body-font-size);
font-weight: var(--bs-body-font-weight);
line-height: var(--bs-body-line-height);
color: var(--bs-body-color);
text-align: var(--bs-body-text-align);
background-color: var(--bs-body-bg);
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
hr {
margin: 1rem 0;
color: inherit;
border: 0;
border-top: 1px solid;
opacity: 0.25;
}
h6, h5, h4, h3, h2, h1 {
margin-top: 0;
margin-bottom: 0.5rem;
font-weight: 500;
line-height: 1.2;
}
h1 {
font-size: calc(1.375rem + 1.5vw);
}
@media (min-width: 1200px) {
h1 {
font-size: 2.5rem;
}
}
h2 {
font-size: calc(1.325rem + 0.9vw);
}
@media (min-width: 1200px) {
h2 {
font-size: 2rem;
}
}
h3 {
font-size: calc(1.3rem + 0.6vw);
}
@media (min-width: 1200px) {
h3 {
font-size: 1.75rem;
}
}
h4 {
font-size: calc(1.275rem + 0.3vw);
}
@media (min-width: 1200px) {
h4 {
font-size: 1.5rem;
}
}
h5 {
font-size: 1.25rem;
}
h6 {
font-size: 1rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title] {
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
-webkit-text-decoration-skip-ink: none;
text-decoration-skip-ink: none;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul {
padding-left: 2rem;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: 0.5rem;
margin-left: 0;
}
blockquote {
margin: 0 0 1rem;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 0.875em;
}
mark {
padding: 0.1875em;
background-color: var(--bs-highlight-bg);
}
sub,
sup {
position: relative;
font-size: 0.75em;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
a {
color: var(--bs-link-color);
text-decoration: underline;
}
a:hover {
color: var(--bs-link-hover-color);
}
a:not([href]):not([class]), a:not([href]):not([class]):hover {
color: inherit;
text-decoration: none;
}
pre,
code,
kbd,
samp {
font-family: var(--bs-font-monospace);
font-size: 1em;
}
pre {
display: block;
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
font-size: 0.875em;
}
pre code {
font-size: inherit;
color: inherit;
word-break: normal;
}
code {
font-size: 0.875em;
color: var(--bs-code-color);
word-wrap: break-word;
}
a > code {
color: inherit;
}
kbd {
padding: 0.1875rem 0.375rem;
font-size: 0.875em;
color: var(--bs-body-bg);
background-color: var(--bs-body-color);
border-radius: 0.25rem;
}
kbd kbd {
padding: 0;
font-size: 1em;
}
figure {
margin: 0 0 1rem;
}
img,
svg {
vertical-align: middle;
}
table {
caption-side: bottom;
border-collapse: collapse;
}
caption {
padding-top: 0.5rem;
padding-bottom: 0.5rem;
color: #6c757d;
text-align: left;
}
th {
text-align: inherit;
text-align: -webkit-match-parent;
}
thead,
tbody,
tfoot,
tr,
td,
th {
border-color: inherit;
border-style: solid;
border-width: 0;
}
label {
display: inline-block;
}
button {
border-radius: 0;
}
button:focus:not(:focus-visible) {
outline: 0;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
select {
text-transform: none;
}
[role=button] {
cursor: pointer;
}
select {
word-wrap: normal;
}
select:disabled {
opacity: 1;
}
[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {
display: none !important;
}
button,
[type=button],
[type=reset],
[type=submit] {
-webkit-appearance: button;
}
button:not(:disabled),
[type=button]:not(:disabled),
[type=reset]:not(:disabled),
[type=submit]:not(:disabled) {
cursor: pointer;
}
::-moz-focus-inner {
padding: 0;
border-style: none;
}
textarea {
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
float: left;
width: 100%;
padding: 0;
margin-bottom: 0.5rem;
font-size: calc(1.275rem + 0.3vw);
line-height: inherit;
}
@media (min-width: 1200px) {
legend {
font-size: 1.5rem;
}
}
legend + * {
clear: left;
}
::-webkit-datetime-edit-fields-wrapper,
::-webkit-datetime-edit-text,
::-webkit-datetime-edit-minute,
::-webkit-datetime-edit-hour-field,
::-webkit-datetime-edit-day-field,
::-webkit-datetime-edit-month-field,
::-webkit-datetime-edit-year-field {
padding: 0;
}
::-webkit-inner-spin-button {
height: auto;
}
[type=search] {
outline-offset: -2px;
-webkit-appearance: textfield;
}
/* rtl:raw:
[type="tel"],
[type="url"],
[type="email"],
[type="number"] {
direction: ltr;
}
*/
::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-color-swatch-wrapper {
padding: 0;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
::file-selector-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
iframe {
border: 0;
}
summary {
display: list-item;
cursor: pointer;
}
progress {
vertical-align: baseline;
}
[hidden] {
display: none !important;
}
/*# sourceMappingURL=bootstrap-reboot.css.map */

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,485 @@
/*!
* Bootstrap Reboot v5.2.3 (https://getbootstrap.com/)
* Copyright 2011-2022 The Bootstrap Authors
* Copyright 2011-2022 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
:root {
--bs-blue: #0d6efd;
--bs-indigo: #6610f2;
--bs-purple: #6f42c1;
--bs-pink: #d63384;
--bs-red: #dc3545;
--bs-orange: #fd7e14;
--bs-yellow: #ffc107;
--bs-green: #198754;
--bs-teal: #20c997;
--bs-cyan: #0dcaf0;
--bs-black: #000;
--bs-white: #fff;
--bs-gray: #6c757d;
--bs-gray-dark: #343a40;
--bs-gray-100: #f8f9fa;
--bs-gray-200: #e9ecef;
--bs-gray-300: #dee2e6;
--bs-gray-400: #ced4da;
--bs-gray-500: #adb5bd;
--bs-gray-600: #6c757d;
--bs-gray-700: #495057;
--bs-gray-800: #343a40;
--bs-gray-900: #212529;
--bs-primary: #0d6efd;
--bs-secondary: #6c757d;
--bs-success: #198754;
--bs-info: #0dcaf0;
--bs-warning: #ffc107;
--bs-danger: #dc3545;
--bs-light: #f8f9fa;
--bs-dark: #212529;
--bs-primary-rgb: 13, 110, 253;
--bs-secondary-rgb: 108, 117, 125;
--bs-success-rgb: 25, 135, 84;
--bs-info-rgb: 13, 202, 240;
--bs-warning-rgb: 255, 193, 7;
--bs-danger-rgb: 220, 53, 69;
--bs-light-rgb: 248, 249, 250;
--bs-dark-rgb: 33, 37, 41;
--bs-white-rgb: 255, 255, 255;
--bs-black-rgb: 0, 0, 0;
--bs-body-color-rgb: 33, 37, 41;
--bs-body-bg-rgb: 255, 255, 255;
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
--bs-body-font-family: var(--bs-font-sans-serif);
--bs-body-font-size: 1rem;
--bs-body-font-weight: 400;
--bs-body-line-height: 1.5;
--bs-body-color: #212529;
--bs-body-bg: #fff;
--bs-border-width: 1px;
--bs-border-style: solid;
--bs-border-color: #dee2e6;
--bs-border-color-translucent: rgba(0, 0, 0, 0.175);
--bs-border-radius: 0.375rem;
--bs-border-radius-sm: 0.25rem;
--bs-border-radius-lg: 0.5rem;
--bs-border-radius-xl: 1rem;
--bs-border-radius-2xl: 2rem;
--bs-border-radius-pill: 50rem;
--bs-link-color: #0d6efd;
--bs-link-hover-color: #0a58ca;
--bs-code-color: #d63384;
--bs-highlight-bg: #fff3cd;
}
*,
*::before,
*::after {
box-sizing: border-box;
}
@media (prefers-reduced-motion: no-preference) {
:root {
scroll-behavior: smooth;
}
}
body {
margin: 0;
font-family: var(--bs-body-font-family);
font-size: var(--bs-body-font-size);
font-weight: var(--bs-body-font-weight);
line-height: var(--bs-body-line-height);
color: var(--bs-body-color);
text-align: var(--bs-body-text-align);
background-color: var(--bs-body-bg);
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
hr {
margin: 1rem 0;
color: inherit;
border: 0;
border-top: 1px solid;
opacity: 0.25;
}
h6, h5, h4, h3, h2, h1 {
margin-top: 0;
margin-bottom: 0.5rem;
font-weight: 500;
line-height: 1.2;
}
h1 {
font-size: calc(1.375rem + 1.5vw);
}
@media (min-width: 1200px) {
h1 {
font-size: 2.5rem;
}
}
h2 {
font-size: calc(1.325rem + 0.9vw);
}
@media (min-width: 1200px) {
h2 {
font-size: 2rem;
}
}
h3 {
font-size: calc(1.3rem + 0.6vw);
}
@media (min-width: 1200px) {
h3 {
font-size: 1.75rem;
}
}
h4 {
font-size: calc(1.275rem + 0.3vw);
}
@media (min-width: 1200px) {
h4 {
font-size: 1.5rem;
}
}
h5 {
font-size: 1.25rem;
}
h6 {
font-size: 1rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title] {
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
-webkit-text-decoration-skip-ink: none;
text-decoration-skip-ink: none;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul {
padding-right: 2rem;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: 0.5rem;
margin-right: 0;
}
blockquote {
margin: 0 0 1rem;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 0.875em;
}
mark {
padding: 0.1875em;
background-color: var(--bs-highlight-bg);
}
sub,
sup {
position: relative;
font-size: 0.75em;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
a {
color: var(--bs-link-color);
text-decoration: underline;
}
a:hover {
color: var(--bs-link-hover-color);
}
a:not([href]):not([class]), a:not([href]):not([class]):hover {
color: inherit;
text-decoration: none;
}
pre,
code,
kbd,
samp {
font-family: var(--bs-font-monospace);
font-size: 1em;
}
pre {
display: block;
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
font-size: 0.875em;
}
pre code {
font-size: inherit;
color: inherit;
word-break: normal;
}
code {
font-size: 0.875em;
color: var(--bs-code-color);
word-wrap: break-word;
}
a > code {
color: inherit;
}
kbd {
padding: 0.1875rem 0.375rem;
font-size: 0.875em;
color: var(--bs-body-bg);
background-color: var(--bs-body-color);
border-radius: 0.25rem;
}
kbd kbd {
padding: 0;
font-size: 1em;
}
figure {
margin: 0 0 1rem;
}
img,
svg {
vertical-align: middle;
}
table {
caption-side: bottom;
border-collapse: collapse;
}
caption {
padding-top: 0.5rem;
padding-bottom: 0.5rem;
color: #6c757d;
text-align: right;
}
th {
text-align: inherit;
text-align: -webkit-match-parent;
}
thead,
tbody,
tfoot,
tr,
td,
th {
border-color: inherit;
border-style: solid;
border-width: 0;
}
label {
display: inline-block;
}
button {
border-radius: 0;
}
button:focus:not(:focus-visible) {
outline: 0;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
select {
text-transform: none;
}
[role=button] {
cursor: pointer;
}
select {
word-wrap: normal;
}
select:disabled {
opacity: 1;
}
[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {
display: none !important;
}
button,
[type=button],
[type=reset],
[type=submit] {
-webkit-appearance: button;
}
button:not(:disabled),
[type=button]:not(:disabled),
[type=reset]:not(:disabled),
[type=submit]:not(:disabled) {
cursor: pointer;
}
::-moz-focus-inner {
padding: 0;
border-style: none;
}
textarea {
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
float: right;
width: 100%;
padding: 0;
margin-bottom: 0.5rem;
font-size: calc(1.275rem + 0.3vw);
line-height: inherit;
}
@media (min-width: 1200px) {
legend {
font-size: 1.5rem;
}
}
legend + * {
clear: right;
}
::-webkit-datetime-edit-fields-wrapper,
::-webkit-datetime-edit-text,
::-webkit-datetime-edit-minute,
::-webkit-datetime-edit-hour-field,
::-webkit-datetime-edit-day-field,
::-webkit-datetime-edit-month-field,
::-webkit-datetime-edit-year-field {
padding: 0;
}
::-webkit-inner-spin-button {
height: auto;
}
[type=search] {
outline-offset: -2px;
-webkit-appearance: textfield;
}
[type="tel"],
[type="url"],
[type="email"],
[type="number"] {
direction: ltr;
}
::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-color-swatch-wrapper {
padding: 0;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
::file-selector-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
iframe {
border: 0;
}
summary {
display: list-item;
cursor: pointer;
}
progress {
vertical-align: baseline;
}
[hidden] {
display: none !important;
}
/*# sourceMappingURL=bootstrap-reboot.rtl.css.map */

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,939 @@
.glightbox-container {
width: 100%;
height: 100%;
position: fixed;
top: 0;
left: 0;
z-index: 999999 !important;
overflow: hidden;
-ms-touch-action: none;
touch-action: none;
-webkit-text-size-adjust: 100%;
-moz-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
text-size-adjust: 100%;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
outline: none;
}
.glightbox-container.inactive {
display: none;
}
.glightbox-container .gcontainer {
position: relative;
width: 100%;
height: 100%;
z-index: 9999;
overflow: hidden;
}
.glightbox-container .gslider {
-webkit-transition: -webkit-transform 0.4s ease;
transition: -webkit-transform 0.4s ease;
transition: transform 0.4s ease;
transition: transform 0.4s ease, -webkit-transform 0.4s ease;
height: 100%;
left: 0;
top: 0;
width: 100%;
position: relative;
overflow: hidden;
display: -webkit-box !important;
display: -ms-flexbox !important;
display: flex !important;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
.glightbox-container .gslide {
width: 100%;
position: absolute;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
opacity: 0;
}
.glightbox-container .gslide.current {
opacity: 1;
z-index: 99999;
position: relative;
}
.glightbox-container .gslide.prev {
opacity: 1;
z-index: 9999;
}
.glightbox-container .gslide-inner-content {
width: 100%;
}
.glightbox-container .ginner-container {
position: relative;
width: 100%;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
max-width: 100%;
margin: auto;
height: 100vh;
}
.glightbox-container .ginner-container.gvideo-container {
width: 100%;
}
.glightbox-container .ginner-container.desc-bottom,
.glightbox-container .ginner-container.desc-top {
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
}
.glightbox-container .ginner-container.desc-left,
.glightbox-container .ginner-container.desc-right {
max-width: 100% !important;
}
.gslide iframe,
.gslide video {
outline: none !important;
border: none;
min-height: 165px;
-webkit-overflow-scrolling: touch;
-ms-touch-action: auto;
touch-action: auto;
}
.gslide:not(.current) {
pointer-events: none;
}
.gslide-image {
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
}
.gslide-image img {
max-height: 100vh;
display: block;
padding: 0;
float: none;
outline: none;
border: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
max-width: 100vw;
width: auto;
height: auto;
-o-object-fit: cover;
object-fit: cover;
-ms-touch-action: none;
touch-action: none;
margin: auto;
min-width: 200px;
}
.desc-top .gslide-image img,
.desc-bottom .gslide-image img {
width: auto;
}
.desc-left .gslide-image img,
.desc-right .gslide-image img {
width: auto;
max-width: 100%;
}
.gslide-image img.zoomable {
position: relative;
}
.gslide-image img.dragging {
cursor: -webkit-grabbing !important;
cursor: grabbing !important;
-webkit-transition: none;
transition: none;
}
.gslide-video {
position: relative;
max-width: 100vh;
width: 100% !important;
}
.gslide-video .plyr__poster-enabled.plyr--loading .plyr__poster {
display: none;
}
.gslide-video .gvideo-wrapper {
width: 100%;
/* max-width: 160vmin; */
margin: auto;
}
.gslide-video::before {
content: '';
position: absolute;
width: 100%;
height: 100%;
background: rgba(255, 0, 0, 0.34);
display: none;
}
.gslide-video.playing::before {
display: none;
}
.gslide-video.fullscreen {
max-width: 100% !important;
min-width: 100%;
height: 75vh;
}
.gslide-video.fullscreen video {
max-width: 100% !important;
width: 100% !important;
}
.gslide-inline {
background: #fff;
text-align: left;
max-height: calc(100vh - 40px);
overflow: auto;
max-width: 100%;
margin: auto;
}
.gslide-inline .ginlined-content {
padding: 20px;
width: 100%;
}
.gslide-inline .dragging {
cursor: -webkit-grabbing !important;
cursor: grabbing !important;
-webkit-transition: none;
transition: none;
}
.ginlined-content {
overflow: auto;
display: block !important;
opacity: 1;
}
.gslide-external {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
width: 100%;
min-width: 100%;
background: #fff;
padding: 0;
overflow: auto;
max-height: 75vh;
height: 100%;
}
.gslide-media {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
width: auto;
}
.zoomed .gslide-media {
-webkit-box-shadow: none !important;
box-shadow: none !important;
}
.desc-top .gslide-media,
.desc-bottom .gslide-media {
margin: 0 auto;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
}
.gslide-description {
position: relative;
-webkit-box-flex: 1;
-ms-flex: 1 0 100%;
flex: 1 0 100%;
}
.gslide-description.description-left,
.gslide-description.description-right {
max-width: 100%;
}
.gslide-description.description-bottom,
.gslide-description.description-top {
margin: 0 auto;
width: 100%;
}
.gslide-description p {
margin-bottom: 12px;
}
.gslide-description p:last-child {
margin-bottom: 0;
}
.zoomed .gslide-description {
display: none;
}
.glightbox-button-hidden {
display: none;
}
/*
* Description for mobiles
* something like facebook does the description
* for the photos
*/
.glightbox-mobile .glightbox-container .gslide-description {
height: auto !important;
width: 100%;
position: absolute;
bottom: 0;
padding: 19px 11px;
max-width: 100vw !important;
-webkit-box-ordinal-group: 3 !important;
-ms-flex-order: 2 !important;
order: 2 !important;
max-height: 78vh;
overflow: auto !important;
background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0)), to(rgba(0, 0, 0, 0.75)));
background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.75) 100%);
-webkit-transition: opacity 0.3s linear;
transition: opacity 0.3s linear;
padding-bottom: 50px;
}
.glightbox-mobile .glightbox-container .gslide-title {
color: #fff;
font-size: 1em;
}
.glightbox-mobile .glightbox-container .gslide-desc {
color: #a1a1a1;
}
.glightbox-mobile .glightbox-container .gslide-desc a {
color: #fff;
font-weight: bold;
}
.glightbox-mobile .glightbox-container .gslide-desc * {
color: inherit;
}
.glightbox-mobile .glightbox-container .gslide-desc .desc-more {
color: #fff;
opacity: 0.4;
}
.gdesc-open .gslide-media {
-webkit-transition: opacity 0.5s ease;
transition: opacity 0.5s ease;
opacity: 0.4;
}
.gdesc-open .gdesc-inner {
padding-bottom: 30px;
}
.gdesc-closed .gslide-media {
-webkit-transition: opacity 0.5s ease;
transition: opacity 0.5s ease;
opacity: 1;
}
.greset {
-webkit-transition: all 0.3s ease;
transition: all 0.3s ease;
}
.gabsolute {
position: absolute;
}
.grelative {
position: relative;
}
.glightbox-desc {
display: none !important;
}
.glightbox-open {
overflow: hidden;
}
.gloader {
height: 25px;
width: 25px;
-webkit-animation: lightboxLoader 0.8s infinite linear;
animation: lightboxLoader 0.8s infinite linear;
border: 2px solid #fff;
border-right-color: transparent;
border-radius: 50%;
position: absolute;
display: block;
z-index: 9999;
left: 0;
right: 0;
margin: 0 auto;
top: 47%;
}
.goverlay {
width: 100%;
height: calc(100vh + 1px);
position: fixed;
top: -1px;
left: 0;
background: #000;
will-change: opacity;
}
.glightbox-mobile .goverlay {
background: #000;
}
.gprev,
.gnext,
.gclose {
z-index: 99999;
cursor: pointer;
width: 26px;
height: 44px;
border: none;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
}
.gprev svg,
.gnext svg,
.gclose svg {
display: block;
width: 25px;
height: auto;
margin: 0;
padding: 0;
}
.gprev.disabled,
.gnext.disabled,
.gclose.disabled {
opacity: 0.1;
}
.gprev .garrow,
.gnext .garrow,
.gclose .garrow {
stroke: #fff;
}
.gbtn.focused {
outline: 2px solid #0f3d81;
}
iframe.wait-autoplay {
opacity: 0;
}
.glightbox-closing .gnext,
.glightbox-closing .gprev,
.glightbox-closing .gclose {
opacity: 0 !important;
}
/*Skin */
.glightbox-clean .gslide-description {
background: #fff;
}
.glightbox-clean .gdesc-inner {
padding: 22px 20px;
}
.glightbox-clean .gslide-title {
font-size: 1em;
font-weight: normal;
font-family: arial;
color: #000;
margin-bottom: 19px;
line-height: 1.4em;
}
.glightbox-clean .gslide-desc {
font-size: 0.86em;
margin-bottom: 0;
font-family: arial;
line-height: 1.4em;
}
.glightbox-clean .gslide-video {
background: #000;
}
.glightbox-clean .gprev,
.glightbox-clean .gnext,
.glightbox-clean .gclose {
background-color: rgba(0, 0, 0, 0.75);
border-radius: 4px;
}
.glightbox-clean .gprev path,
.glightbox-clean .gnext path,
.glightbox-clean .gclose path {
fill: #fff;
}
.glightbox-clean .gprev {
position: absolute;
top: -100%;
left: 30px;
width: 40px;
height: 50px;
}
.glightbox-clean .gnext {
position: absolute;
top: -100%;
right: 30px;
width: 40px;
height: 50px;
}
.glightbox-clean .gclose {
width: 35px;
height: 35px;
top: 15px;
right: 10px;
position: absolute;
}
.glightbox-clean .gclose svg {
width: 18px;
height: auto;
}
.glightbox-clean .gclose:hover {
opacity: 1;
}
/*CSS Animations*/
.gfadeIn {
-webkit-animation: gfadeIn 0.5s ease;
animation: gfadeIn 0.5s ease;
}
.gfadeOut {
-webkit-animation: gfadeOut 0.5s ease;
animation: gfadeOut 0.5s ease;
}
.gslideOutLeft {
-webkit-animation: gslideOutLeft 0.3s ease;
animation: gslideOutLeft 0.3s ease;
}
.gslideInLeft {
-webkit-animation: gslideInLeft 0.3s ease;
animation: gslideInLeft 0.3s ease;
}
.gslideOutRight {
-webkit-animation: gslideOutRight 0.3s ease;
animation: gslideOutRight 0.3s ease;
}
.gslideInRight {
-webkit-animation: gslideInRight 0.3s ease;
animation: gslideInRight 0.3s ease;
}
.gzoomIn {
-webkit-animation: gzoomIn 0.5s ease;
animation: gzoomIn 0.5s ease;
}
.gzoomOut {
-webkit-animation: gzoomOut 0.5s ease;
animation: gzoomOut 0.5s ease;
}
@-webkit-keyframes lightboxLoader {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
@keyframes lightboxLoader {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
@-webkit-keyframes gfadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes gfadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@-webkit-keyframes gfadeOut {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
@keyframes gfadeOut {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
@-webkit-keyframes gslideInLeft {
from {
opacity: 0;
-webkit-transform: translate3d(-60%, 0, 0);
transform: translate3d(-60%, 0, 0);
}
to {
visibility: visible;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
opacity: 1;
}
}
@keyframes gslideInLeft {
from {
opacity: 0;
-webkit-transform: translate3d(-60%, 0, 0);
transform: translate3d(-60%, 0, 0);
}
to {
visibility: visible;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
opacity: 1;
}
}
@-webkit-keyframes gslideOutLeft {
from {
opacity: 1;
visibility: visible;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
to {
-webkit-transform: translate3d(-60%, 0, 0);
transform: translate3d(-60%, 0, 0);
opacity: 0;
visibility: hidden;
}
}
@keyframes gslideOutLeft {
from {
opacity: 1;
visibility: visible;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
to {
-webkit-transform: translate3d(-60%, 0, 0);
transform: translate3d(-60%, 0, 0);
opacity: 0;
visibility: hidden;
}
}
@-webkit-keyframes gslideInRight {
from {
opacity: 0;
visibility: visible;
-webkit-transform: translate3d(60%, 0, 0);
transform: translate3d(60%, 0, 0);
}
to {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
opacity: 1;
}
}
@keyframes gslideInRight {
from {
opacity: 0;
visibility: visible;
-webkit-transform: translate3d(60%, 0, 0);
transform: translate3d(60%, 0, 0);
}
to {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
opacity: 1;
}
}
@-webkit-keyframes gslideOutRight {
from {
opacity: 1;
visibility: visible;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
to {
-webkit-transform: translate3d(60%, 0, 0);
transform: translate3d(60%, 0, 0);
opacity: 0;
}
}
@keyframes gslideOutRight {
from {
opacity: 1;
visibility: visible;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
to {
-webkit-transform: translate3d(60%, 0, 0);
transform: translate3d(60%, 0, 0);
opacity: 0;
}
}
@-webkit-keyframes gzoomIn {
from {
opacity: 0;
-webkit-transform: scale3d(0.3, 0.3, 0.3);
transform: scale3d(0.3, 0.3, 0.3);
}
to {
opacity: 1;
}
}
@keyframes gzoomIn {
from {
opacity: 0;
-webkit-transform: scale3d(0.3, 0.3, 0.3);
transform: scale3d(0.3, 0.3, 0.3);
}
to {
opacity: 1;
}
}
@-webkit-keyframes gzoomOut {
from {
opacity: 1;
}
50% {
opacity: 0;
-webkit-transform: scale3d(0.3, 0.3, 0.3);
transform: scale3d(0.3, 0.3, 0.3);
}
to {
opacity: 0;
}
}
@keyframes gzoomOut {
from {
opacity: 1;
}
50% {
opacity: 0;
-webkit-transform: scale3d(0.3, 0.3, 0.3);
transform: scale3d(0.3, 0.3, 0.3);
}
to {
opacity: 0;
}
}
@media (min-width: 769px) {
.glightbox-container .ginner-container {
width: auto;
height: auto;
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-direction: row;
flex-direction: row;
}
.glightbox-container .ginner-container.desc-top .gslide-description {
-webkit-box-ordinal-group: 1;
-ms-flex-order: 0;
order: 0;
}
.glightbox-container .ginner-container.desc-top .gslide-image,
.glightbox-container .ginner-container.desc-top .gslide-image img {
-webkit-box-ordinal-group: 2;
-ms-flex-order: 1;
order: 1;
}
.glightbox-container .ginner-container.desc-left .gslide-description {
-webkit-box-ordinal-group: 1;
-ms-flex-order: 0;
order: 0;
}
.glightbox-container .ginner-container.desc-left .gslide-image {
-webkit-box-ordinal-group: 2;
-ms-flex-order: 1;
order: 1;
}
.gslide-image img {
max-height: 97vh;
max-width: 100%;
}
.gslide-image img.zoomable {
cursor: -webkit-zoom-in;
cursor: zoom-in;
}
.zoomed .gslide-image img.zoomable {
cursor: -webkit-grab;
cursor: grab;
}
.gslide-inline {
max-height: 95vh;
}
.gslide-external {
max-height: 100vh;
}
.gslide-description.description-left,
.gslide-description.description-right {
max-width: 275px;
}
.glightbox-open {
height: auto;
}
.goverlay {
background: rgba(0, 0, 0, 0.92);
}
.glightbox-clean .gslide-media {
-webkit-box-shadow: 1px 2px 9px 0px rgba(0, 0, 0, 0.65);
box-shadow: 1px 2px 9px 0px rgba(0, 0, 0, 0.65);
}
.glightbox-clean .description-left .gdesc-inner,
.glightbox-clean .description-right .gdesc-inner {
position: absolute;
height: 100%;
overflow-y: auto;
}
.glightbox-clean .gprev,
.glightbox-clean .gnext,
.glightbox-clean .gclose {
background-color: rgba(0, 0, 0, 0.32);
}
.glightbox-clean .gprev:hover,
.glightbox-clean .gnext:hover,
.glightbox-clean .gclose:hover {
background-color: rgba(0, 0, 0, 0.7);
}
.glightbox-clean .gprev {
top: 45%;
}
.glightbox-clean .gnext {
top: 45%;
}
}
@media (min-width: 992px) {
.glightbox-clean .gclose {
opacity: 0.7;
right: 20px;
}
}
@media screen and (max-height: 420px) {
.goverlay {
background: #000;
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save