+ PRN tokens represent ownership of the PERRINN network.
+
+ {{UI.PERRINNAdminLastMessageObj?.statistics?.emailsContributorsAuth?.length}} members own {{UI.formatSharesToPRNCurrency(currencySelected,UI.PERRINNAdminLastMessageObj?.statistics?.wallet?.shareBalance)}}.
+
+ You can follow the impact of your investment live on PERRINN.com
+
PRN holders directory
+
+
+ Your PRN amount grows at a rate of {{UI.appSettingsCosts?.interestRateYear | percent : "0.0"}} a year
+
+
+
+ encrypted
+
+ Your tokens are stored in your wallet on PERRINN.com
+
+ Soon you will be able to sell or exchange your tokens with other members here.
+
+
+
+
+
+
+
+ The capital raised from token sales goes towards
+
+ You will pay {{UI.formatSharesToCurrency(currencySelected,creditList[creditSelected]*UI.appSettingsPayment.currencyList[currencySelected].toCOIN)}} and recieve {{UI.formatSharesToPRNCurrency(currencySelected,creditList[creditSelected]*UI.appSettingsPayment.currencyList[currencySelected].toCOIN)}}.
+
+
+
+
+
+
+ Credit or debit card
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/buyPRN.component.ts b/src/app/buyPRN.component.ts
index e8e39c23..4f033d5d 100644
--- a/src/app/buyPRN.component.ts
+++ b/src/app/buyPRN.component.ts
@@ -23,155 +23,9 @@ import { AgChartOptions } from 'ag-charts-community';
@Component({
selector: "buyPRN",
- template: `
-
-
-
-
-
-
-
-
-
- PRN tokens represent ownership of the PERRINN network.
-
- {{UI.PERRINNAdminLastMessageObj?.statistics?.emailsContributorsAuth?.length}} members own {{UI.formatSharesToPRNCurrency(currencySelected,UI.PERRINNAdminLastMessageObj?.statistics?.wallet?.shareBalance)}}.
-
- You can follow the impact of your investment live on PERRINN.com
-
PRN holders directory
-
-
- Your PRN amount grows at a rate of {{UI.appSettingsCosts?.interestRateYear | percent : "0.0"}} a year
-
-
-
- encrypted
-
- Your tokens are stored in your wallet on PERRINN.com
-
- Soon you will be able to sell or exchange your tokens with other members here.
-
-
-
-
-
-
-
- The capital raised from token sales goes towards
-
- You will pay {{UI.formatSharesToCurrency(currencySelected,creditList[creditSelected]*UI.appSettingsPayment.currencyList[currencySelected].toCOIN)}} and recieve {{UI.formatSharesToPRNCurrency(currencySelected,creditList[creditSelected]*UI.appSettingsPayment.currencyList[currencySelected].toCOIN)}}.
-
{{UI.formatSharesToCurrency(null,message.payload?.statistics?.stripeBalance?.available[0]?.amount/100*UI.appSettingsPayment.currencyList["gbp"].toCOIN)}} available in the PERRINN fund
{{UI.formatSharesToCurrency(null,message.payload?.statistics?.stripeBalance?.available[0]?.amount/100*UI.appSettingsPayment.currencyList["gbp"].toCOIN)}} available in the PERRINN fund
+ {{UI.PERRINNAdminLastMessageObj?.statistics?.emailsContributorsAuth?.length}} members own {{UI.formatSharesToPRNCurrency(null,UI.PERRINNAdminLastMessageObj?.statistics?.wallet?.shareBalance)}}.
+
\ No newline at end of file
diff --git a/src/app/directory.component.ts b/src/app/directory.component.ts
index f6ec9d02..3e90984c 100644
--- a/src/app/directory.component.ts
+++ b/src/app/directory.component.ts
@@ -9,51 +9,7 @@ import firebase from 'firebase/compat/app';
@Component({
selector:'directory',
- template:`
-
-
- {{UI.PERRINNAdminLastMessageObj?.statistics?.emailsContributorsAuth?.length}} members own {{UI.formatSharesToPRNCurrency(null,UI.PERRINNAdminLastMessageObj?.statistics?.wallet?.shareBalance)}}.
-
- `,
+ templateUrl:'./directory.component.html',
})
export class DirectoryComponent {
diff --git a/src/app/login.component.html b/src/app/login.component.html
new file mode 100644
index 00000000..c82ef2cd
--- /dev/null
+++ b/src/app/login.component.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/login.component.ts b/src/app/login.component.ts
index aaae95b4..c43e788d 100644
--- a/src/app/login.component.ts
+++ b/src/app/login.component.ts
@@ -7,32 +7,7 @@ import { AngularFirestore, AngularFirestoreCollection } from '@angular/fire/comp
@Component({
selector:'login',
- template:`
-
-
-
-
-
-
-
- `,
+ templateUrl:'./login.component.html',
})
export class LoginComponent {
diff --git a/src/app/profile.component.html b/src/app/profile.component.html
new file mode 100644
index 00000000..299c9af2
--- /dev/null
+++ b/src/app/profile.component.html
@@ -0,0 +1,225 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{focusUserLastMessageObj?.name}}
+ {{UI.formatSharesToPRNCurrency(null,focusUserLastMessageObj?.wallet?.shareBalance||0)}}
+ link
+
+ {{focusUserLastMessageObj?.userPresentation}}
+ Level {{focusUserLastMessageObj?.contract?.levelTimeAdjusted|number:'1.1-1'}}
+ Waiting for contract signature (Level {{focusUserLastMessageObj?.contract?.level|number:'1.1-1'}})
+
Sign contract
+
+
settings
+
+
Created {{focusUserLastMessageObj?.createdTimestamp|date:'MMMM yyyy'}}, {{focusUserLastMessageObj?.userChain?.index}} Messages, Verified {{((UI.nowSeconds-focusUserLastMessageObj?.verifiedTimestamp?.seconds)/3600/24)|number:'1.2-2'}} days ago
\ No newline at end of file
diff --git a/src/app/profile.component.ts b/src/app/profile.component.ts
index b54fa61f..27cb5c3b 100644
--- a/src/app/profile.component.ts
+++ b/src/app/profile.component.ts
@@ -9,234 +9,9 @@ import firebase from 'firebase/compat/app'
@Component({
selector:'profile',
- template:`
-
-
-
-
-
-
-
-
-
-
-
-
- {{focusUserLastMessageObj?.name}}
- {{UI.formatSharesToPRNCurrency(null,focusUserLastMessageObj?.wallet?.shareBalance||0)}}
- link
-
- {{focusUserLastMessageObj?.userPresentation}}
- Level {{focusUserLastMessageObj?.contract?.levelTimeAdjusted|number:'1.1-1'}}
- Waiting for contract signature (Level {{focusUserLastMessageObj?.contract?.level|number:'1.1-1'}})
-
Sign contract
-
-
settings
-
-
Created {{focusUserLastMessageObj?.createdTimestamp|date:'MMMM yyyy'}}, {{focusUserLastMessageObj?.userChain?.index}} Messages, Verified {{((UI.nowSeconds-focusUserLastMessageObj?.verifiedTimestamp?.seconds)/3600/24)|number:'1.2-2'}} days ago
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index d9d768ca..cc6beaea 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -5,12 +5,12 @@ import { HttpClientModule } from '@angular/common/http';
import { AppComponent } from './app.component';
import { AppRoutingModule } from './app-routing.module';
-import { ChatComponent } from './chat.component';
-import { LoginComponent } from './login.component';
-import { ProfileComponent } from './profile.component';
-import { SettingsComponent } from './settings.component';
-import { DirectoryComponent } from './directory.component';
-import { buyPRNComponent } from './buyPRN.component';
+import { ChatComponent } from './chat/chat.component';
+import { LoginComponent } from './login/login.component';
+import { ProfileComponent } from './profile/profile.component';
+import { SettingsComponent } from './settings/settings.component';
+import { DirectoryComponent } from './directory/directory.component';
+import { buyPRNComponent } from './buyPRN/buyPRN.component';
import { LinkyModule } from 'angular-linky';
import { PipeModule } from './pipes.module';
From aa75e76affea5bb0b591d58be1f2a4f8ce2aa9a9 Mon Sep 17 00:00:00 2001
From: Alex24h <70913804+Alex24h@users.noreply.github.com>
Date: Fri, 28 Feb 2025 17:52:22 +0100
Subject: [PATCH 06/47] Add files via upload
---
functions/scheduled/dailyMembership.f.js | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/functions/scheduled/dailyMembership.f.js b/functions/scheduled/dailyMembership.f.js
index bd9c1925..268680ba 100644
--- a/functions/scheduled/dailyMembership.f.js
+++ b/functions/scheduled/dailyMembership.f.js
@@ -39,10 +39,10 @@ exports=module.exports=functions.runWith(runtimeOpts).pubsub.schedule('every 24
})
const results=await Promise.all(verifyMessageBatch)
results.forEach((result)=>{
- if (result.wallet.shareBalance>0)statistics.emailsContributorsAuth.push(result.emails.auth)
- statistics.wallet.shareBalance=((statistics.wallet||{}).shareBalance||0)+result.wallet.shareBalance
+ if (result.wallet.balance>0)statistics.emailsContributorsAuth.push(result.emails.auth)
+ statistics.wallet.balance=((statistics.wallet||{}).balance||0)+result.wallet.balance
statistics.interest.amount=((statistics.interest||{}).amount||0)+result.interest.amount
- statistics.interest.rateDay=statistics.wallet.shareBalance*(Math.exp(result.interest.rateYear/365)-1)
+ statistics.interest.rateDay=statistics.wallet.balance*(Math.exp(result.interest.rateYear/365)-1)
statistics.interest.amountCummulate=((statistics.interest||{}).amountCummulate||0)+result.interest.amountCummulate
statistics.contract.amount=((statistics.contract||{}).amount||0)+result.contract.amount
statistics.contract.amountCummulate=((statistics.contract||{}).amountCummulate||0)+result.contract.amountCummulate
From 168b84235f9488ff2982a8c5881d32dec0c28ce5 Mon Sep 17 00:00:00 2001
From: Alex24h <70913804+Alex24h@users.noreply.github.com>
Date: Fri, 28 Feb 2025 17:52:50 +0100
Subject: [PATCH 07/47] Add files via upload
---
functions/utils/verifyMessage.js | 1 -
1 file changed, 1 deletion(-)
diff --git a/functions/utils/verifyMessage.js b/functions/utils/verifyMessage.js
index 965e2fe6..9dbb028e 100644
--- a/functions/utils/verifyMessage.js
+++ b/functions/utils/verifyMessage.js
@@ -280,7 +280,6 @@ module.exports = {
interest.amount=Math.max(0,interest.amountBase*(Math.exp(interest.rateYear/365*interest.days)-1))
interest.amountCummulate=(((userPreviousMessageData.interest||{}).amountCummulate)||0)+interest.amount
wallet.balance=Math.round((Number(wallet.balance)+Number((interest.amount)||0))*100000)/100000
- wallet.shareBalance=wallet.balance
//*******MESSAGE WRITES**********************
//message event
From d0b4c97baa5c2988f8c650ce45a09c3eeae58ed8 Mon Sep 17 00:00:00 2001
From: Alex24h <70913804+Alex24h@users.noreply.github.com>
Date: Fri, 28 Feb 2025 17:57:10 +0100
Subject: [PATCH 08/47] Delete src/app/buyPRN.component.html
---
src/app/buyPRN.component.html | 146 ----------------------------------
1 file changed, 146 deletions(-)
delete mode 100644 src/app/buyPRN.component.html
diff --git a/src/app/buyPRN.component.html b/src/app/buyPRN.component.html
deleted file mode 100644
index eea08e96..00000000
--- a/src/app/buyPRN.component.html
+++ /dev/null
@@ -1,146 +0,0 @@
-
-
-
-
-
-
-
-
-
- PRN tokens represent ownership of the PERRINN network.
-
- {{UI.PERRINNAdminLastMessageObj?.statistics?.emailsContributorsAuth?.length}} members own {{UI.formatSharesToPRNCurrency(currencySelected,UI.PERRINNAdminLastMessageObj?.statistics?.wallet?.shareBalance)}}.
-
- You can follow the impact of your investment live on PERRINN.com
-
PRN holders directory
-
-
- Your PRN amount grows at a rate of {{UI.appSettingsCosts?.interestRateYear | percent : "0.0"}} a year
-
-
-
- encrypted
-
- Your tokens are stored in your wallet on PERRINN.com
-
- Soon you will be able to sell or exchange your tokens with other members here.
-
-
-
-
-
-
-
- The capital raised from token sales goes towards
-
- You will pay {{UI.formatSharesToCurrency(currencySelected,creditList[creditSelected]*UI.appSettingsPayment.currencyList[currencySelected].toCOIN)}} and recieve {{UI.formatSharesToPRNCurrency(currencySelected,creditList[creditSelected]*UI.appSettingsPayment.currencyList[currencySelected].toCOIN)}}.
-
{{UI.formatSharesToCurrency(null,message.payload?.statistics?.stripeBalance?.available[0]?.amount/100*UI.appSettingsPayment.currencyList["gbp"].toCOIN)}} available in the PERRINN fund
- {{UI.PERRINNAdminLastMessageObj?.statistics?.emailsContributorsAuth?.length}} members own {{UI.formatSharesToPRNCurrency(null,UI.PERRINNAdminLastMessageObj?.statistics?.wallet?.shareBalance)}}.
-
- {{focusUserLastMessageObj?.name}}
- {{UI.formatSharesToPRNCurrency(null,focusUserLastMessageObj?.wallet?.shareBalance||0)}}
- link
-
- {{focusUserLastMessageObj?.userPresentation}}
- Level {{focusUserLastMessageObj?.contract?.levelTimeAdjusted|number:'1.1-1'}}
- Waiting for contract signature (Level {{focusUserLastMessageObj?.contract?.level|number:'1.1-1'}})
-
Sign contract
-
-
settings
-
-
Created {{focusUserLastMessageObj?.createdTimestamp|date:'MMMM yyyy'}}, {{focusUserLastMessageObj?.userChain?.index}} Messages, Verified {{((UI.nowSeconds-focusUserLastMessageObj?.verifiedTimestamp?.seconds)/3600/24)|number:'1.2-2'}} days ago
Your short presentation helps other members get to know you.
-
I am someone who is:
-
-
Update my presentation
-
-
Your public link
-
Add view only public link so other members can view your documents, website, code and more.
-
-
Update my link
-
-
Your email address
-
Authentication address.
-
-
Update my email address
-
-
Your PERRINN contract
-
This contract is between you and PERRINN team. When these settings are updated, they will need to be approved before taking effect. You or PERRINN can cancel this contract at any time.
-
Level [1-10] defines the level of experience / capacity to resolve problems independently. Level 1 is university student with no experience, 10 is expert (10+ years experience in the field). After signature your level will increase automatically with time at a rate of +1 per year.
-
-
No contract registered.
-
Contract number {{UI.currentUserLastMessageObj?.contract?.createdTimestamp}}
-
Signature valid for level {{UI.currentUserLastMessageObj?.contract?.levelTimeAdjusted|number:'1.1-1'}}, you will receive {{UI.formatSharesToPRNCurrency(null,UI.appSettingsContract.hourlyRateLevel1*UI.currentUserLastMessageObj?.contract?.levelTimeAdjusted)}} per hour when you declare working hours.
+ PRN tokens represent ownership of the PERRINN team.
+
+ {{UI.PERRINNAdminLastMessageObj?.statistics?.emailsContributorsAuth?.length}} members own {{UI.formatSharesToPRNCurrency(currencySelected,UI.PERRINNAdminLastMessageObj?.statistics?.wallet?.balance)}}.
+
+ You can follow the impact of your investment live on PERRINN.com
+
PRN holders directory
+
+
+ Your PRN amount grows at a rate of {{UI.appSettingsCosts?.interestRateYear | percent : "0.0"}} a year
+
+
+
+ encrypted
+
+ Your tokens are stored in your wallet on PERRINN.com
+
+ Soon you will be able to sell or exchange your tokens with other members here.
+
+
+
+
+
+
+
+ The capital raised from token sales goes towards
+
+ You will pay {{UI.formatSharesToCurrency(currencySelected,creditList[creditSelected]*UI.appSettingsPayment.currencyList[currencySelected].toCOIN)}} and recieve {{UI.formatSharesToPRNCurrency(currencySelected,creditList[creditSelected]*UI.appSettingsPayment.currencyList[currencySelected].toCOIN)}}.
+
{{UI.formatSharesToCurrency(null,message.payload?.statistics?.stripeBalance?.available[0]?.amount/100*UI.appSettingsPayment.currencyList["gbp"].toCOIN)}} available in the PERRINN fund
+ {{UI.PERRINNAdminLastMessageObj?.statistics?.emailsContributorsAuth?.length}} members own {{UI.formatSharesToPRNCurrency(null,UI.PERRINNAdminLastMessageObj?.statistics?.wallet?.balance)}}.
+
+
+
+
+
+
+
+
+
+
{{message.values?.name}}
+ link
+ {{message.values?.userPresentation}}
+ Level {{message.values?.contract?.levelTimeAdjusted|number:'1.1-1'}}.
+
+ {{focusUserLastMessageObj?.name}}
+ {{UI.formatSharesToPRNCurrency(null,focusUserLastMessageObj?.wallet?.balance||0)}}
+ link
+
+ {{focusUserLastMessageObj?.userPresentation}}
+ Level {{focusUserLastMessageObj?.contract?.levelTimeAdjusted|number:'1.1-1'}}
+ Waiting for contract signature (Level {{focusUserLastMessageObj?.contract?.level|number:'1.1-1'}})
+
Sign contract
+
+
settings
+
+
Created {{focusUserLastMessageObj?.createdTimestamp|date:'MMMM yyyy'}}, {{focusUserLastMessageObj?.userChain?.index}} Messages, Verified {{((UI.nowSeconds-focusUserLastMessageObj?.verifiedTimestamp?.seconds)/3600/24)|number:'1.2-2'}} days ago
Your short presentation helps other members get to know you.
+
I am someone who is:
+
+
Update my presentation
+
+
Your public link
+
Add view only public link so other members can view your documents, website, code and more.
+
+
Update my link
+
+
Your email address
+
Authentication address.
+
+
Update my email address
+
+
Your PERRINN contract
+
This contract is between you and PERRINN team. When these settings are updated, they will need to be approved before taking effect. You or PERRINN can cancel this contract at any time.
+
Level [1-10] defines the level of experience / capacity to resolve problems independently. Level 1 is university student with no experience, 10 is expert (10+ years experience in the field). After signature your level will increase automatically with time at a rate of +1 per year.
+
+
No contract registered.
+
Contract number {{UI.currentUserLastMessageObj?.contract?.createdTimestamp}}
+
Signature valid for level {{UI.currentUserLastMessageObj?.contract?.levelTimeAdjusted|number:'1.1-1'}}, you will receive {{UI.formatSharesToPRNCurrency(null,UI.appSettingsContract.hourlyRateLevel1*UI.currentUserLastMessageObj?.contract?.levelTimeAdjusted)}} per hour when you declare working hours.