├── force-app └── main │ └── default │ ├── pages │ ├── ScheduleVF.page │ ├── IdeasHome.page │ ├── AnswersHome.page │ ├── CommunitiesLogin.page │ ├── CommunitiesLanding.page │ ├── CommunitiesTemplate.page │ ├── ScheduleVF.page-meta.xml │ ├── Web_Chat.page-meta.xml │ ├── SiteLogin.page-meta.xml │ ├── CommunitiesLogin.page-meta.xml │ ├── CommunitiesLanding.page-meta.xml │ ├── IdeasHome.page-meta.xml │ ├── MyProfilePage.page-meta.xml │ ├── ChangePassword.page-meta.xml │ ├── FileNotFound.page-meta.xml │ ├── InMaintenance.page-meta.xml │ ├── SiteRegister.page-meta.xml │ ├── SiteTemplate.page-meta.xml │ ├── AnswersHome.page-meta.xml │ ├── BandwidthExceeded.page-meta.xml │ ├── CommunitiesSelfReg.page-meta.xml │ ├── CommunitiesTemplate.page-meta.xml │ ├── Exception.page-meta.xml │ ├── Unauthorized.page-meta.xml │ ├── UnderConstruction.page-meta.xml │ ├── ForgotPassword.page-meta.xml │ ├── SiteTemplate.page │ ├── ForgotPasswordConfirm.page-meta.xml │ ├── SiteRegisterConfirm.page-meta.xml │ ├── CommunitiesSelfRegConfirm.page-meta.xml │ ├── StdExceptionTemplate.page-meta.xml │ ├── BandwidthExceeded.page │ ├── UnderConstruction.page │ ├── InMaintenance.page │ ├── StdExceptionTemplate.page │ ├── SiteLogin.page │ ├── ForgotPasswordConfirm.page │ ├── SiteRegisterConfirm.page │ ├── CommunitiesSelfRegConfirm.page │ ├── FileNotFound.page │ ├── Exception.page │ ├── ForgotPassword.page │ ├── Unauthorized.page │ ├── CommunitiesSelfReg.page │ ├── ChangePassword.page │ ├── SiteRegister.page │ ├── Web_Chat.page │ └── MyProfilePage.page │ ├── lwc │ ├── pubsub │ │ ├── pubsub.html │ │ ├── pubsub.js-meta.xml │ │ └── pubsub.js │ ├── metroPassForm │ │ ├── metroPassForm.js │ │ ├── metroPassForm.js-meta.xml │ │ └── metroPassForm.html │ ├── filterRestaurant │ │ ├── filterRestaurant.js │ │ ├── filterRestaurant.js-meta.xml │ │ └── filterRestaurant.html │ ├── .eslintrc.json │ ├── displayRestaurants │ │ ├── displayRestaurants.js-meta.xml │ │ ├── displayRestaurants.html │ │ └── displayRestaurants.js │ ├── contactCustomerSupport │ │ ├── contactCustomerSupport.js-meta.xml │ │ └── contactCustomerSupport.html │ └── searchLocation │ │ ├── searchLocation.js-meta.xml │ │ ├── searchLocation.html │ │ └── searchLocation.js │ ├── triggers │ ├── metroWalletTrigger.trigger │ ├── metroWalletTrigger.trigger-meta.xml │ ├── ticketEMailTrigger.trigger-meta.xml │ └── ticketEMailTrigger.trigger │ ├── components │ ├── SiteFooter.component │ ├── SiteLogin.component-meta.xml │ ├── SiteFooter.component-meta.xml │ ├── SiteHeader.component-meta.xml │ ├── SitePoweredBy.component-meta.xml │ ├── SitePoweredBy.component │ ├── SiteHeader.component │ └── SiteLogin.component │ ├── sharingRules │ ├── Case.sharingRules-meta.xml │ ├── Lead.sharingRules-meta.xml │ ├── User.sharingRules-meta.xml │ ├── Account.sharingRules-meta.xml │ ├── AgentWork.sharingRules-meta.xml │ ├── Asset.sharingRules-meta.xml │ ├── Campaign.sharingRules-meta.xml │ ├── Contact.sharingRules-meta.xml │ ├── Image.sharingRules-meta.xml │ ├── Invoice.sharingRules-meta.xml │ ├── ListEmail.sharingRules-meta.xml │ ├── Location.sharingRules-meta.xml │ ├── Macro.sharingRules-meta.xml │ ├── Order.sharingRules-meta.xml │ ├── Product2.sharingRules-meta.xml │ ├── QuickText.sharingRules-meta.xml │ ├── Scorecard.sharingRules-meta.xml │ ├── Ticket__c.sharingRules-meta.xml │ ├── TodayGoal.sharingRules-meta.xml │ ├── WorkOrder.sharingRules-meta.xml │ ├── WorkType.sharingRules-meta.xml │ ├── AccountBrand.sharingRules-meta.xml │ ├── CalendarModel.sharingRules-meta.xml │ ├── CalendarView.sharingRules-meta.xml │ ├── ChannelProgram.sharingRules-meta.xml │ ├── ContactRequest.sharingRules-meta.xml │ ├── CreditMemo.sharingRules-meta.xml │ ├── DataUsePurpose.sharingRules-meta.xml │ ├── FlowInterview.sharingRules-meta.xml │ ├── Individual.sharingRules-meta.xml │ ├── LegalEntity.sharingRules-meta.xml │ ├── MacroUsage.sharingRules-meta.xml │ ├── MetroSlot__c.sharingRules-meta.xml │ ├── Metro_Train__c.sharingRules-meta.xml │ ├── Opportunity.sharingRules-meta.xml │ ├── PartyConsent.sharingRules-meta.xml │ ├── PromptAction.sharingRules-meta.xml │ ├── PromptError.sharingRules-meta.xml │ ├── QuickTextUsage.sharingRules-meta.xml │ ├── ReturnOrder.sharingRules-meta.xml │ ├── Station__c.sharingRules-meta.xml │ ├── WorkTypeGroup.sharingRules-meta.xml │ ├── ActivityRecurrence2.sharingRules-meta.xml │ ├── AssistantProgress.sharingRules-meta.xml │ ├── AuthorizationForm.sharingRules-meta.xml │ ├── CleanLeadBackup.sharingRules-meta.xml │ ├── CommSubscription.sharingRules-meta.xml │ ├── ConsumptionSchedule.sharingRules-meta.xml │ ├── ContactPointConsent.sharingRules-meta.xml │ ├── DataUseLegalBasis.sharingRules-meta.xml │ ├── DelegatedAccount.sharingRules-meta.xml │ ├── ExchangeUserMapping.sharingRules-meta.xml │ ├── FinanceTransaction.sharingRules-meta.xml │ ├── FlowInterviewLog.sharingRules-meta.xml │ ├── LiveAgentSession.sharingRules-meta.xml │ ├── LiveChatTranscript.sharingRules-meta.xml │ ├── MessagingEndUser.sharingRules-meta.xml │ ├── MessagingSession.sharingRules-meta.xml │ ├── MetroLocation__c.sharingRules-meta.xml │ ├── MetroMarketing__c.sharingRules-meta.xml │ ├── NearbyHospital__c.sharingRules-meta.xml │ ├── NetworkMemberChunk.sharingRules-meta.xml │ ├── OrgDeleteRequest.sharingRules-meta.xml │ ├── PartnerFundClaim.sharingRules-meta.xml │ ├── PartnerFundRequest.sharingRules-meta.xml │ ├── ProcessException.sharingRules-meta.xml │ ├── RecordMergeHistory.sharingRules-meta.xml │ ├── ReportResultBlob.sharingRules-meta.xml │ ├── ServiceAppointment.sharingRules-meta.xml │ ├── ServiceContract.sharingRules-meta.xml │ ├── ServiceResource.sharingRules-meta.xml │ ├── ServiceTerritory.sharingRules-meta.xml │ ├── SiqUserBlacklist.sharingRules-meta.xml │ ├── StreamingChannel.sharingRules-meta.xml │ ├── UserServicePresence.sharingRules-meta.xml │ ├── AlternativePaymentMethod.sharingRules-meta.xml │ ├── AssistantInteraction.sharingRules-meta.xml │ ├── AssistantRecommendation.sharingRules-meta.xml │ ├── AuthorizationFormConsent.sharingRules-meta.xml │ ├── AuthorizationFormDataUse.sharingRules-meta.xml │ ├── CommSubscriptionConsent.sharingRules-meta.xml │ ├── ComponentResponseCache.sharingRules-meta.xml │ ├── ContactPointTypeConsent.sharingRules-meta.xml │ ├── EngagementChannelType.sharingRules-meta.xml │ ├── ExternalEventMapping.sharingRules-meta.xml │ ├── FinanceBalanceSnapshot.sharingRules-meta.xml │ ├── MetroStationJunction__c.sharingRules-meta.xml │ ├── NotifDeliveryUserPref.sharingRules-meta.xml │ ├── PartnerFundAllocation.sharingRules-meta.xml │ ├── PartnerMarketingBudget.sharingRules-meta.xml │ ├── PendingServiceRouting.sharingRules-meta.xml │ ├── StreamActivityAccess.sharingRules-meta.xml │ ├── UserAppMenuCustomization.sharingRules-meta.xml │ ├── UserEmailPreferredPerson.sharingRules-meta.xml │ ├── UserProvisioningRequest.sharingRules-meta.xml │ ├── ActivityRecurrence2Exception.sharingRules-meta.xml │ └── CommSubscriptionChannelType.sharingRules-meta.xml │ ├── classes │ ├── ContactCustomerSupportWrapper.cls │ ├── CaseController.cls │ ├── APIWrapper.cls-meta.xml │ ├── CaseController.cls-meta.xml │ ├── ZomatoClass.cls-meta.xml │ ├── Zomato_Test.cls-meta.xml │ ├── ContactController.cls-meta.xml │ ├── MetroScheduleCtrl.cls-meta.xml │ ├── SiteLoginController.cls-meta.xml │ ├── ChangePasswordController.cls-meta.xml │ ├── ContactController.cls │ ├── ForgotPasswordController.cls-meta.xml │ ├── MyProfilePageController.cls-meta.xml │ ├── SiteLoginControllerTest.cls-meta.xml │ ├── SiteRegisterController.cls-meta.xml │ ├── accWithContController.cls-meta.xml │ ├── ChangePasswordControllerTest.cls-meta.xml │ ├── CommunitiesLandingController.cls-meta.xml │ ├── CommunitiesLoginController.cls-meta.xml │ ├── CommunitiesLoginControllerTest.cls-meta.xml │ ├── CommunitiesSelfRegController.cls-meta.xml │ ├── ContactCustomerSupportWrapper.cls-meta.xml │ ├── ForgotPasswordControllerTest.cls-meta.xml │ ├── LightningLoginFormController.cls-meta.xml │ ├── MyProfilePageControllerTest.cls-meta.xml │ ├── SiteRegisterControllerTest.cls-meta.xml │ ├── CommunitiesLandingControllerTest.cls-meta.xml │ ├── CommunitiesSelfRegConfirmController.cls-meta.xml │ ├── CommunitiesSelfRegControllerTest.cls-meta.xml │ ├── ContactCustomerSupportController.cls-meta.xml │ ├── LightningForgotPasswordController.cls-meta.xml │ ├── LightningLoginFormControllerTest.cls-meta.xml │ ├── LightningSelfRegisterController.cls-meta.xml │ ├── LightningSelfRegisterControllerTest.cls-meta.xml │ ├── CommunitiesSelfRegConfirmControllerTest.cls-meta.xml │ ├── LightningForgotPasswordControllerTest.cls-meta.xml │ ├── Zomato_Test.cls │ ├── CommunitiesSelfRegConfirmController.cls │ ├── APIWrapper.cls │ ├── accWithContController.cls │ ├── CommunitiesLandingController.cls │ ├── CommunitiesLoginControllerTest.cls │ ├── SiteLoginController.cls │ ├── CommunitiesSelfRegConfirmControllerTest.cls │ ├── ChangePasswordController.cls │ ├── ForgotPasswordControllerTest.cls │ ├── ForgotPasswordController.cls │ ├── CommunitiesLoginController.cls │ ├── SiteLoginControllerTest.cls │ ├── ChangePasswordControllerTest.cls │ ├── SiteRegisterControllerTest.cls │ ├── CommunitiesLandingControllerTest.cls │ ├── CommunitiesSelfRegControllerTest.cls │ ├── LightningLoginFormControllerTest.cls │ ├── LightningForgotPasswordController.cls │ ├── ZomatoClass.cls │ ├── LightningForgotPasswordControllerTest.cls │ ├── MyProfilePageController.cls │ ├── LightningLoginFormController.cls │ ├── SiteRegisterController.cls │ ├── MyProfilePageControllerTest.cls │ ├── CommunitiesSelfRegController.cls │ ├── ContactCustomerSupportController.cls │ ├── LightningSelfRegisterController.cls │ └── LightningSelfRegisterControllerTest.cls │ ├── tabs │ ├── Ticket__c.tab-meta.xml │ ├── Knowledge__kav.tab-meta.xml │ ├── MetroLocation__c.tab-meta.xml │ ├── MetroPass__c.tab-meta.xml │ ├── Metro_Train__c.tab-meta.xml │ ├── Station__c.tab-meta.xml │ ├── MetroSlot__c.tab-meta.xml │ ├── MetroWallet__c.tab-meta.xml │ └── MetroStationJunction__c.tab-meta.xml │ ├── aura │ └── .eslintrc.json │ ├── reports │ └── MetroSupportReports.reportFolder-meta.xml │ ├── EmbeddedServiceConfig │ └── MahametroLink_Chat_Agents.EmbeddedServiceConfig-meta.xml │ ├── queues │ ├── Basic_Cases.queue-meta.xml │ ├── Advanced_Cases.queue-meta.xml │ ├── Chats.queue-meta.xml │ └── FAQs.queue-meta.xml │ ├── cspTrustedSites │ ├── ZomatoDevelopers.cspTrustedSite-meta.xml │ ├── b_zmtcdn_com.cspTrustedSite-meta.xml │ ├── fonts_gstatic_com.cspTrustedSite-meta.xml │ ├── fonts_googleapis_com.cspTrustedSite-meta.xml │ └── CommTrustedSite.cspTrustedSite-meta.xml │ ├── assignmentRules │ ├── Lead.assignmentRules-meta.xml │ └── Case.assignmentRules-meta.xml │ ├── workflows │ └── MetroWallet__c.workflow-meta.xml │ ├── EmbeddedServiceLiveAgent │ └── MahametroLink_Chat_Agents.EmbeddedServiceLiveAgent-meta.xml │ ├── entitlementProcesses │ ├── standard case.entitlementProcess-meta.xml │ └── metro support process.entitlementProcess-meta.xml │ └── sites │ ├── MahaMetroLink.site-meta.xml │ ├── MahaMetroLinkPune.site-meta.xml │ └── Customer_Support_Community.site-meta.xml ├── .vscode ├── settings.json ├── extensions.json └── launch.json ├── jest.config.js ├── .prettierignore ├── scripts ├── soql │ └── account.soql └── apex │ └── hello.apex ├── sfdx-project.json ├── .prettierrc ├── .eslintignore ├── config └── project-scratch-def.json ├── .forceignore ├── .gitignore ├── package.json └── README.md /force-app/main/default/pages/ScheduleVF.page: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /force-app/main/default/lwc/pubsub/pubsub.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /force-app/main/default/pages/IdeasHome.page: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /force-app/main/default/pages/AnswersHome.page: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /force-app/main/default/triggers/metroWalletTrigger.trigger: -------------------------------------------------------------------------------- 1 | trigger metroWalletTrigger on MetroWallet__c (before insert) { 2 | 3 | } -------------------------------------------------------------------------------- /force-app/main/default/components/SiteFooter.component: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "search.exclude": { 3 | "**/node_modules": true, 4 | "**/bower_components": true, 5 | "**/.sfdx": true 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /force-app/main/default/lwc/metroPassForm/metroPassForm.js: -------------------------------------------------------------------------------- 1 | import { LightningElement } from 'lwc'; 2 | 3 | export default class MetroPassForm extends LightningElement {} -------------------------------------------------------------------------------- /force-app/main/default/lwc/filterRestaurant/filterRestaurant.js: -------------------------------------------------------------------------------- 1 | import { LightningElement } from 'lwc'; 2 | 3 | export default class FilterRestaurant extends LightningElement {} -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/Case.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/Lead.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/User.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/Account.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/AgentWork.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/Asset.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/Campaign.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/Contact.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/Image.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/Invoice.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/ListEmail.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/Location.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/Macro.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/Order.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/Product2.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/QuickText.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/Scorecard.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/Ticket__c.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/TodayGoal.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/WorkOrder.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/WorkType.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/AccountBrand.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/CalendarModel.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/CalendarView.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/ChannelProgram.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/ContactRequest.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/CreditMemo.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/DataUsePurpose.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/FlowInterview.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/Individual.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/LegalEntity.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/MacroUsage.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/MetroSlot__c.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/Metro_Train__c.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/Opportunity.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/PartyConsent.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/PromptAction.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/PromptError.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/QuickTextUsage.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/ReturnOrder.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/Station__c.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/WorkTypeGroup.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/ActivityRecurrence2.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/AssistantProgress.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/AuthorizationForm.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/CleanLeadBackup.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/CommSubscription.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/ConsumptionSchedule.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/ContactPointConsent.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/DataUseLegalBasis.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/DelegatedAccount.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/ExchangeUserMapping.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/FinanceTransaction.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/FlowInterviewLog.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/LiveAgentSession.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/LiveChatTranscript.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/MessagingEndUser.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/MessagingSession.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/MetroLocation__c.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/MetroMarketing__c.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/NearbyHospital__c.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/NetworkMemberChunk.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/OrgDeleteRequest.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/PartnerFundClaim.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/PartnerFundRequest.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/ProcessException.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/RecordMergeHistory.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/ReportResultBlob.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/ServiceAppointment.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/ServiceContract.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/ServiceResource.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/ServiceTerritory.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/SiqUserBlacklist.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/StreamingChannel.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/UserServicePresence.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/pages/CommunitiesLogin.page: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/AlternativePaymentMethod.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/AssistantInteraction.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/AssistantRecommendation.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/AuthorizationFormConsent.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/AuthorizationFormDataUse.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/CommSubscriptionConsent.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/ComponentResponseCache.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/ContactPointTypeConsent.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/EngagementChannelType.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/ExternalEventMapping.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/FinanceBalanceSnapshot.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/MetroStationJunction__c.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/NotifDeliveryUserPref.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/PartnerFundAllocation.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/PartnerMarketingBudget.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/PendingServiceRouting.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/StreamActivityAccess.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/UserAppMenuCustomization.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/UserEmailPreferredPerson.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/UserProvisioningRequest.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/ActivityRecurrence2Exception.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/sharingRules/CommSubscriptionChannelType.sharingRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /force-app/main/default/classes/ContactCustomerSupportWrapper.cls: -------------------------------------------------------------------------------- 1 | public class ContactCustomerSupportWrapper { 2 | @AuraEnabled public Case cases; 3 | @AuraEnabled public List caseList; 4 | } -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- 1 | const { jestConfig } = require('@salesforce/sfdx-lwc-jest/config'); 2 | 3 | module.exports = { 4 | ...jestConfig, 5 | modulePathIgnorePatterns: ['/.localdevserver'] 6 | }; 7 | -------------------------------------------------------------------------------- /force-app/main/default/classes/CaseController.cls: -------------------------------------------------------------------------------- 1 | public class CaseController { 2 | @AuraEnabled 3 | public static Case createCase(Case cases){ 4 | upsert cases; 5 | return cases; 6 | } 7 | } -------------------------------------------------------------------------------- /force-app/main/default/pages/CommunitiesLanding.page: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /force-app/main/default/classes/APIWrapper.cls-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Active 5 | 6 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "salesforce.salesforcedx-vscode", 4 | "redhat.vscode-xml", 5 | "dbaeumer.vscode-eslint", 6 | "esbenp.prettier-vscode", 7 | "financialforce.lana" 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /force-app/main/default/classes/CaseController.cls-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Active 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/classes/ZomatoClass.cls-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Active 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/classes/Zomato_Test.cls-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Active 5 | 6 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # List files or directories below to ignore them when running prettier 2 | # More information: https://prettier.io/docs/en/ignore.html 3 | # 4 | 5 | **/staticresources/** 6 | .localdevserver 7 | .sfdx 8 | .vscode 9 | 10 | coverage/ -------------------------------------------------------------------------------- /force-app/main/default/classes/ContactController.cls-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Active 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/classes/MetroScheduleCtrl.cls-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Active 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/classes/SiteLoginController.cls-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Active 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/tabs/Ticket__c.tab-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | true 4 | Custom45: Ticket 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/classes/ChangePasswordController.cls-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Active 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/classes/ContactController.cls: -------------------------------------------------------------------------------- 1 | public with sharing class ContactController { 2 | 3 | @AuraEnabled 4 | public static Contact createContact(Contact contact){ 5 | upsert contact; 6 | return contact; 7 | } 8 | } -------------------------------------------------------------------------------- /force-app/main/default/classes/ForgotPasswordController.cls-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Active 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/classes/MyProfilePageController.cls-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Active 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/classes/SiteLoginControllerTest.cls-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Active 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/classes/SiteRegisterController.cls-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Active 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/classes/accWithContController.cls-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Active 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/tabs/Knowledge__kav.tab-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | true 4 | Custom55: Books 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/tabs/MetroLocation__c.tab-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | true 4 | Custom78: Map 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/tabs/MetroPass__c.tab-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | true 4 | Custom46: Postage 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/tabs/Metro_Train__c.tab-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | true 4 | Custom36: Train 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/tabs/Station__c.tab-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | true 4 | Custom24: Building 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/classes/ChangePasswordControllerTest.cls-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Active 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/classes/CommunitiesLandingController.cls-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Active 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/classes/CommunitiesLoginController.cls-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Active 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/classes/CommunitiesLoginControllerTest.cls-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Active 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/classes/CommunitiesSelfRegController.cls-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Active 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/classes/ContactCustomerSupportWrapper.cls-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Active 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/classes/ForgotPasswordControllerTest.cls-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Active 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/classes/LightningLoginFormController.cls-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Active 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/classes/MyProfilePageControllerTest.cls-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Active 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/classes/SiteRegisterControllerTest.cls-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Active 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/tabs/MetroSlot__c.tab-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | true 4 | Custom25: Alarm clock 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/tabs/MetroWallet__c.tab-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | true 4 | Custom40: Credit card 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/triggers/metroWalletTrigger.trigger-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Active 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/triggers/ticketEMailTrigger.trigger-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Active 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/classes/CommunitiesLandingControllerTest.cls-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Active 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/classes/CommunitiesSelfRegConfirmController.cls-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Active 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/classes/CommunitiesSelfRegControllerTest.cls-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Active 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/classes/ContactCustomerSupportController.cls-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Active 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/classes/LightningForgotPasswordController.cls-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Active 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/classes/LightningLoginFormControllerTest.cls-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Active 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/classes/LightningSelfRegisterController.cls-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Active 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/classes/LightningSelfRegisterControllerTest.cls-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Active 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/tabs/MetroStationJunction__c.tab-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | true 4 | Custom64: Compass 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/classes/CommunitiesSelfRegConfirmControllerTest.cls-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Active 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/classes/LightningForgotPasswordControllerTest.cls-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Active 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/lwc/pubsub/pubsub.js-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | false 5 | -------------------------------------------------------------------------------- /scripts/soql/account.soql: -------------------------------------------------------------------------------- 1 | // Use .soql files to store SOQL queries. 2 | // You can execute queries in VS Code by selecting the 3 | // query text and running the command: 4 | // SFDX: Execute SOQL Query with Currently Selected Text 5 | 6 | SELECT Id, Name FROM Account 7 | -------------------------------------------------------------------------------- /force-app/main/default/aura/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": ["@salesforce/eslint-plugin-aura"], 3 | "extends": ["plugin:@salesforce/eslint-plugin-aura/recommended", "prettier"], 4 | "rules": { 5 | "vars-on-top": "off", 6 | "no-unused-expressions": "off" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /force-app/main/default/lwc/filterRestaurant/filterRestaurant.js-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | false 5 | -------------------------------------------------------------------------------- /sfdx-project.json: -------------------------------------------------------------------------------- 1 | { 2 | "packageDirectories": [ 3 | { 4 | "path": "force-app", 5 | "default": true 6 | } 7 | ], 8 | "name": "MahaMetroLink", 9 | "namespace": "", 10 | "sfdcLoginUrl": "https://login.salesforce.com", 11 | "sourceApiVersion": "52.0" 12 | } 13 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "none", 3 | "overrides": [ 4 | { 5 | "files": "**/lwc/**/*.html", 6 | "options": { "parser": "lwc" } 7 | }, 8 | { 9 | "files": "*.{cmp,page,component}", 10 | "options": { "parser": "html" } 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /force-app/main/default/classes/Zomato_Test.cls: -------------------------------------------------------------------------------- 1 | @isTest 2 | public class Zomato_Test { 3 | @isTest 4 | public static void test(){ 5 | test.startTest(); 6 | String locationName = 'Pune'; 7 | ZomatoClass.getLocation(locationName); 8 | test.stopTest(); 9 | } 10 | } -------------------------------------------------------------------------------- /force-app/main/default/lwc/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["@salesforce/eslint-config-lwc/recommended", "prettier"], 3 | "overrides": [ 4 | { 5 | "files": ["*.test.js"], 6 | "rules": { 7 | "@lwc/lwc/no-unexpected-wire-adapter-usages": "off" 8 | } 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /force-app/main/default/pages/CommunitiesTemplate.page: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /force-app/main/default/classes/CommunitiesSelfRegConfirmController.cls: -------------------------------------------------------------------------------- 1 | /** 2 | * An apex page controller that takes the user to the right start page based on credentials or lack thereof 3 | */ 4 | public with sharing class CommunitiesSelfRegConfirmController { 5 | 6 | public CommunitiesSelfRegConfirmController() {} 7 | } -------------------------------------------------------------------------------- /force-app/main/default/components/SiteLogin.component-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Default Salesforce Sites Login component 5 | 6 | 7 | -------------------------------------------------------------------------------- /force-app/main/default/components/SiteFooter.component-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Default Lightning Platform site footer component 5 | 6 | 7 | -------------------------------------------------------------------------------- /force-app/main/default/components/SiteHeader.component-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Default Lightning Platform site header component 5 | 6 | 7 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | **/lwc/**/*.css 2 | **/lwc/**/*.html 3 | **/lwc/**/*.json 4 | **/lwc/**/*.svg 5 | **/lwc/**/*.xml 6 | **/aura/**/*.auradoc 7 | **/aura/**/*.cmp 8 | **/aura/**/*.css 9 | **/aura/**/*.design 10 | **/aura/**/*.evt 11 | **/aura/**/*.json 12 | **/aura/**/*.svg 13 | **/aura/**/*.tokens 14 | **/aura/**/*.xml 15 | **/aura/**/*.app 16 | .sfdx 17 | -------------------------------------------------------------------------------- /force-app/main/default/components/SitePoweredBy.component-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | Default Lightning Platform site powered by component 5 | 6 | 7 | -------------------------------------------------------------------------------- /force-app/main/default/pages/ScheduleVF.page-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | false 5 | false 6 | 7 | 8 | -------------------------------------------------------------------------------- /config/project-scratch-def.json: -------------------------------------------------------------------------------- 1 | { 2 | "orgName": "Demo company", 3 | "edition": "Developer", 4 | "features": ["EnableSetPasswordInApi"], 5 | "settings": { 6 | "lightningExperienceSettings": { 7 | "enableS1DesktopEnabled": true 8 | }, 9 | "mobileSettings": { 10 | "enableS1EncryptedStoragePref2": false 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /force-app/main/default/classes/APIWrapper.cls: -------------------------------------------------------------------------------- 1 | public class APIWrapper { 2 | public String trainName{get; set;} 3 | public String stationName{get; set;} 4 | public String stationCode{get; set;} 5 | public Datetime arrival{get; set;} 6 | public Datetime departure{get; set;} 7 | public String trainNumber{get; set;} 8 | public Integer id{get; set;} 9 | } -------------------------------------------------------------------------------- /.forceignore: -------------------------------------------------------------------------------- 1 | # List files or directories below to ignore them when running force:source:push, force:source:pull, and force:source:status 2 | # More information: https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_exclude_source.htm 3 | # 4 | 5 | package.xml 6 | 7 | # LWC configuration files 8 | **/jsconfig.json 9 | **/.eslintrc.json 10 | 11 | # LWC Jest 12 | **/__tests__/** -------------------------------------------------------------------------------- /force-app/main/default/pages/Web_Chat.page-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | false 5 | false 6 | A test website for using web chat 7 | 8 | 9 | -------------------------------------------------------------------------------- /force-app/main/default/pages/SiteLogin.page-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | false 5 | false 6 | Default Salesforce Sites Login page 7 | 8 | 9 | -------------------------------------------------------------------------------- /force-app/main/default/pages/CommunitiesLogin.page-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | false 5 | false 6 | Default experiences login page 7 | 8 | 9 | -------------------------------------------------------------------------------- /force-app/main/default/classes/accWithContController.cls: -------------------------------------------------------------------------------- 1 | global without sharing class accWithContController { 2 | @AuraEnabled 3 | public static list < Account > fetchAccount() { 4 | // query 10 records from account with their relevant contacts and return query. 5 | List < Account > lstOfAcc = [select Name, AnnualRevenue, BillingState, (select LastName from contacts) from Account LIMIT 10]; 6 | return lstOfAcc; 7 | } 8 | } -------------------------------------------------------------------------------- /force-app/main/default/pages/CommunitiesLanding.page-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | false 5 | false 6 | Default experiences landing page 7 | 8 | 9 | -------------------------------------------------------------------------------- /force-app/main/default/pages/IdeasHome.page-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | false 5 | false 6 | Default Lightning Platform home page for ideas sites 7 | 8 | 9 | -------------------------------------------------------------------------------- /force-app/main/default/pages/MyProfilePage.page-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | false 5 | false 6 | Default Salesforce Sites My Profile page 7 | 8 | 9 | -------------------------------------------------------------------------------- /force-app/main/default/pages/ChangePassword.page-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | false 5 | false 6 | Default Salesforce Sites Change Password page 7 | 8 | 9 | -------------------------------------------------------------------------------- /force-app/main/default/pages/FileNotFound.page-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | false 5 | false 6 | Default Lightning Platform Page/Data Not Found page 7 | 8 | 9 | -------------------------------------------------------------------------------- /force-app/main/default/pages/InMaintenance.page-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | false 5 | false 6 | Default Lightning Platform In Maintenance page 7 | 8 | 9 | -------------------------------------------------------------------------------- /force-app/main/default/pages/SiteRegister.page-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | false 5 | false 6 | Default Salesforce Sites User Registration page 7 | 8 | 9 | -------------------------------------------------------------------------------- /force-app/main/default/pages/SiteTemplate.page-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | false 5 | false 6 | Default Lightning Platform template for site pages 7 | 8 | 9 | -------------------------------------------------------------------------------- /force-app/main/default/pages/AnswersHome.page-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | false 5 | false 6 | Default Lightning Platform home page for Answers sites 7 | 8 | 9 | -------------------------------------------------------------------------------- /force-app/main/default/pages/BandwidthExceeded.page-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | false 5 | false 6 | Default Lightning Platform Limit Exceeded page 7 | 8 | 9 | -------------------------------------------------------------------------------- /force-app/main/default/pages/CommunitiesSelfReg.page-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | false 5 | false 6 | Default experiences self registration page 7 | 8 | 9 | -------------------------------------------------------------------------------- /force-app/main/default/pages/CommunitiesTemplate.page-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | false 5 | false 6 | Default template for experiences pages 7 | 8 | 9 | -------------------------------------------------------------------------------- /force-app/main/default/pages/Exception.page-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | false 5 | false 6 | Default Lightning Platform page for post-authentication errors 7 | 8 | 9 | -------------------------------------------------------------------------------- /force-app/main/default/pages/Unauthorized.page-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | false 5 | false 6 | Default Lightning Platform Authorization Required page 7 | 8 | 9 | -------------------------------------------------------------------------------- /force-app/main/default/reports/MetroSupportReports.reportFolder-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Manage 5 | sf_psl_hackathon@august2021.com 6 | User 7 | 8 | Metro Support Reports 9 | 10 | -------------------------------------------------------------------------------- /force-app/main/default/pages/UnderConstruction.page-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | false 5 | false 6 | Default Lightning Platform Under Construction page 7 | 8 | 9 | -------------------------------------------------------------------------------- /force-app/main/default/pages/ForgotPassword.page-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | false 5 | false 6 | Default Salesforce Sites Forgot Password Confirmation page 7 | 8 | 9 | -------------------------------------------------------------------------------- /force-app/main/default/pages/SiteTemplate.page: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
6 |
7 | 8 | 9 |
10 | 11 | 12 |
13 |
-------------------------------------------------------------------------------- /force-app/main/default/pages/ForgotPasswordConfirm.page-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | false 5 | false 6 | Default Salesforce Sites Forgot Password Confirmation page 7 | 8 | 9 | -------------------------------------------------------------------------------- /force-app/main/default/pages/SiteRegisterConfirm.page-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | false 5 | false 6 | Default Salesforce Sites User Registration Confirmation page 7 | 8 | 9 | -------------------------------------------------------------------------------- /force-app/main/default/classes/CommunitiesLandingController.cls: -------------------------------------------------------------------------------- 1 | /** 2 | * An apex page controller that takes the user to the right start page based on credentials or lack thereof 3 | */ 4 | public with sharing class CommunitiesLandingController { 5 | 6 | // Code we will invoke on page load. 7 | public PageReference forwardToStartPage() { 8 | return Network.communitiesLanding(); 9 | } 10 | 11 | public CommunitiesLandingController() {} 12 | } -------------------------------------------------------------------------------- /force-app/main/default/pages/CommunitiesSelfRegConfirm.page-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | false 5 | false 6 | Default experiences self registration confirmation page 7 | 8 | 9 | -------------------------------------------------------------------------------- /force-app/main/default/pages/StdExceptionTemplate.page-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | false 5 | false 6 | Default Lightning Platform template for standard exception pages 7 | 8 | 9 | -------------------------------------------------------------------------------- /force-app/main/default/classes/CommunitiesLoginControllerTest.cls: -------------------------------------------------------------------------------- 1 | /** 2 | * An apex page controller that exposes the site login functionality 3 | */ 4 | @IsTest global with sharing class CommunitiesLoginControllerTest { 5 | @IsTest(SeeAllData=true) 6 | global static void testCommunitiesLoginController () { 7 | CommunitiesLoginController controller = new CommunitiesLoginController(); 8 | System.assertEquals(null, controller.forwardToAuthPage()); 9 | } 10 | } -------------------------------------------------------------------------------- /force-app/main/default/EmbeddedServiceConfig/MahametroLink_Chat_Agents.EmbeddedServiceConfig-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | false 4 | Web 5 | MahametroLink Chat Agents 6 | false 7 | MahaMetroLinkPune 8 | 9 | -------------------------------------------------------------------------------- /scripts/apex/hello.apex: -------------------------------------------------------------------------------- 1 | // Use .apex files to store anonymous Apex. 2 | // You can execute anonymous Apex in VS Code by selecting the 3 | // apex text and running the command: 4 | // SFDX: Execute Anonymous Apex with Currently Selected Text 5 | // You can also execute the entire file by running the command: 6 | // SFDX: Execute Anonymous Apex with Editor Contents 7 | 8 | string tempvar = 'Enter_your_name_here'; 9 | System.debug('Hello World!'); 10 | System.debug('My name is ' + tempvar); -------------------------------------------------------------------------------- /force-app/main/default/lwc/displayRestaurants/displayRestaurants.js-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 46.0 4 | true 5 | 6 | lightning__AppPage 7 | lightningCommunity__Page 8 | lightningCommunity__Default 9 | 10 | -------------------------------------------------------------------------------- /force-app/main/default/lwc/metroPassForm/metroPassForm.js-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | true 5 | 6 | lightning__AppPage 7 | lightning__HomePage 8 | lightning__RecordPage 9 | lightningCommunity__Page 10 | 11 | -------------------------------------------------------------------------------- /force-app/main/default/queues/Basic_Cases.queue-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | false 4 | Basic Cases 5 | 6 | 7 | Basic_Support_Agents 8 | 9 | 10 | 11 | Case 12 | 13 | 14 | -------------------------------------------------------------------------------- /force-app/main/default/queues/Advanced_Cases.queue-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | false 4 | Advanced Cases 5 | 6 | 7 | Advanced_Support_Agents 8 | 9 | 10 | 11 | Case 12 | 13 | 14 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "name": "Launch Apex Replay Debugger", 9 | "type": "apex-replay", 10 | "request": "launch", 11 | "logFile": "${command:AskForLogFileName}", 12 | "stopOnEntry": true, 13 | "trace": true 14 | } 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /force-app/main/default/classes/SiteLoginController.cls: -------------------------------------------------------------------------------- 1 | /** 2 | * An apex page controller that exposes the site login functionality 3 | */ 4 | global with sharing class SiteLoginController { 5 | global String username {get; set;} 6 | global String password {get; set;} 7 | 8 | global PageReference login() { 9 | String startUrl = System.currentPageReference().getParameters().get('startURL'); 10 | return Site.login(username, password, startUrl); 11 | } 12 | 13 | global SiteLoginController () {} 14 | } -------------------------------------------------------------------------------- /force-app/main/default/lwc/contactCustomerSupport/contactCustomerSupport.js-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52.0 4 | true 5 | 6 | lightning__AppPage 7 | lightning__HomePage 8 | lightning__RecordPage 9 | lightningCommunity__Page 10 | 11 | -------------------------------------------------------------------------------- /force-app/main/default/classes/CommunitiesSelfRegConfirmControllerTest.cls: -------------------------------------------------------------------------------- 1 | /** 2 | * An apex page controller that takes the user to the right start page based on credentials or lack thereof 3 | */ 4 | @IsTest public with sharing class CommunitiesSelfRegConfirmControllerTest { 5 | @IsTest(SeeAllData=true) public static void testCommunitiesSelfRegConfirmController() { 6 | // Instantiate a new controller with all parameters in the page 7 | CommunitiesSelfRegConfirmController controller = new CommunitiesSelfRegConfirmController(); 8 | } 9 | } -------------------------------------------------------------------------------- /force-app/main/default/classes/ChangePasswordController.cls: -------------------------------------------------------------------------------- 1 | /** 2 | * An apex page controller that exposes the change password functionality 3 | */ 4 | public with sharing class ChangePasswordController { 5 | public String oldPassword {get; set;} 6 | public String newPassword {get; set;} 7 | public String verifyNewPassword {get; set;} 8 | 9 | public PageReference changePassword() { 10 | return Site.changePassword(newPassword, verifyNewPassword, oldpassword); 11 | } 12 | 13 | public ChangePasswordController() {} 14 | } -------------------------------------------------------------------------------- /force-app/main/default/components/SitePoweredBy.component: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /force-app/main/default/classes/ForgotPasswordControllerTest.cls: -------------------------------------------------------------------------------- 1 | /** 2 | * An apex page controller that exposes the site forgot password functionality 3 | */ 4 | @IsTest public with sharing class ForgotPasswordControllerTest { 5 | @IsTest(SeeAllData=true) public static void testForgotPasswordController() { 6 | // Instantiate a new controller with all parameters in the page 7 | ForgotPasswordController controller = new ForgotPasswordController(); 8 | controller.username = 'test@salesforce.com'; 9 | 10 | System.assertEquals(controller.forgotPassword(),null); 11 | } 12 | } -------------------------------------------------------------------------------- /force-app/main/default/classes/ForgotPasswordController.cls: -------------------------------------------------------------------------------- 1 | /** 2 | * An apex page controller that exposes the site forgot password functionality 3 | */ 4 | public with sharing class ForgotPasswordController { 5 | public String username {get; set;} 6 | 7 | public ForgotPasswordController() {} 8 | 9 | public PageReference forgotPassword() { 10 | boolean success = Site.forgotPassword(username); 11 | PageReference pr = Page.ForgotPasswordConfirm; 12 | pr.setRedirect(true); 13 | 14 | if (success) { 15 | return pr; 16 | } 17 | return null; 18 | } 19 | } -------------------------------------------------------------------------------- /force-app/main/default/pages/BandwidthExceeded.page: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 |
10 | 11 |
12 |
13 |
-------------------------------------------------------------------------------- /force-app/main/default/classes/CommunitiesLoginController.cls: -------------------------------------------------------------------------------- 1 | /** 2 | * An apex page controller that exposes the site login functionality 3 | */ 4 | global with sharing class CommunitiesLoginController { 5 | 6 | global CommunitiesLoginController () {} 7 | 8 | // Code we will invoke on page load. 9 | global PageReference forwardToAuthPage() { 10 | String startUrl = System.currentPageReference().getParameters().get('startURL'); 11 | String displayType = System.currentPageReference().getParameters().get('display'); 12 | return Network.forwardToAuthPage(startUrl, displayType); 13 | } 14 | } -------------------------------------------------------------------------------- /force-app/main/default/queues/Chats.queue-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | false 4 | Chats 5 | 6 | 7 | ashish_salunkhe@persistent.com.sfhack 8 | sf_psl_hackathon@august2021.com 9 | 10 | 11 | Chats 12 | 13 | LiveChatTranscript 14 | 15 | 16 | -------------------------------------------------------------------------------- /force-app/main/default/queues/FAQs.queue-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | false 4 | FAQs 5 | 6 | 7 | ashish_salunkhe@persistent.com.sfhack 8 | sf_psl_hackathon@august2021.com 9 | 10 | 11 | FAQs 12 | 13 | LiveChatTranscript 14 | 15 | 16 | -------------------------------------------------------------------------------- /force-app/main/default/classes/SiteLoginControllerTest.cls: -------------------------------------------------------------------------------- 1 | /** 2 | * An apex page controller that exposes the site login functionality 3 | */ 4 | @IsTest global with sharing class SiteLoginControllerTest { 5 | @IsTest(SeeAllData=true) global static void testSiteLoginController () { 6 | // Instantiate a new controller with all parameters in the page 7 | SiteLoginController controller = new SiteLoginController (); 8 | controller.username = 'test@salesforce.com'; 9 | controller.password = '123456'; 10 | 11 | System.assertEquals(controller.login(),null); 12 | } 13 | } -------------------------------------------------------------------------------- /force-app/main/default/pages/UnderConstruction.page: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
12 | 13 |
14 |
15 |
-------------------------------------------------------------------------------- /force-app/main/default/cspTrustedSites/ZomatoDevelopers.cspTrustedSite-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | All 4 | https://developers.zomato.com 5 | true 6 | true 7 | true 8 | true 9 | true 10 | true 11 | true 12 | 13 | -------------------------------------------------------------------------------- /force-app/main/default/pages/InMaintenance.page: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
12 | 13 |
14 |
15 |
-------------------------------------------------------------------------------- /force-app/main/default/classes/ChangePasswordControllerTest.cls: -------------------------------------------------------------------------------- 1 | /** 2 | * An apex page controller that exposes the change password functionality 3 | */ 4 | @IsTest public with sharing class ChangePasswordControllerTest { 5 | @IsTest(SeeAllData=true) public static void testChangePasswordController() { 6 | // Instantiate a new controller with all parameters in the page 7 | ChangePasswordController controller = new ChangePasswordController(); 8 | controller.oldPassword = '123456'; 9 | controller.newPassword = 'qwerty1'; 10 | controller.verifyNewPassword = 'qwerty1'; 11 | 12 | System.assertEquals(controller.changePassword(),null); 13 | } 14 | } -------------------------------------------------------------------------------- /force-app/main/default/cspTrustedSites/b_zmtcdn_com.cspTrustedSite-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Communities 4 | b_zmtcdn_com Trusted Site Added Via Community Builder 5 | https://b.zmtcdn.com 6 | true 7 | true 8 | true 9 | true 10 | true 11 | true 12 | true 13 | 14 | -------------------------------------------------------------------------------- /force-app/main/default/cspTrustedSites/fonts_gstatic_com.cspTrustedSite-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Communities 4 | fonts_gstatic_com Trusted Site Added Via Community Builder 5 | https://fonts.gstatic.com 6 | true 7 | true 8 | true 9 | true 10 | true 11 | true 12 | true 13 | 14 | -------------------------------------------------------------------------------- /force-app/main/default/cspTrustedSites/fonts_googleapis_com.cspTrustedSite-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Communities 4 | fonts_googleapis_com Trusted Site Added Via Community Builder 5 | https://fonts.googleapis.com 6 | true 7 | true 8 | true 9 | true 10 | true 11 | true 12 | true 13 | 14 | -------------------------------------------------------------------------------- /force-app/main/default/cspTrustedSites/CommTrustedSite.cspTrustedSite-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Communities 4 | CommTrustedSite Trusted Site Added Via Community Builder 5 | https://persistentsystems305-dev-ed--c.visualforce.com 6 | true 7 | true 8 | true 9 | true 10 | true 11 | true 12 | true 13 | 14 | -------------------------------------------------------------------------------- /force-app/main/default/classes/SiteRegisterControllerTest.cls: -------------------------------------------------------------------------------- 1 | /** 2 | * Class containing tests for SiteRegisterController 3 | */ 4 | @IsTest public with sharing class SiteRegisterControllerTest { 5 | @IsTest(SeeAllData=true) static void testRegistration() { 6 | SiteRegisterController controller = new SiteRegisterController(); 7 | controller.username = 'test@force.com'; 8 | controller.email = 'test@force.com'; 9 | controller.communityNickname = 'test'; 10 | // registerUser will always return null when the page isn't accessed as a guest user 11 | System.assert(controller.registerUser() == null); 12 | 13 | controller.password = 'abcd1234'; 14 | controller.confirmPassword = 'abcd123'; 15 | System.assert(controller.registerUser() == null); 16 | } 17 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # This file is used for Git repositories to specify intentionally untracked files that Git should ignore. 2 | # If you are not using git, you can delete this file. For more information see: https://git-scm.com/docs/gitignore 3 | # For useful gitignore templates see: https://github.com/github/gitignore 4 | 5 | # Salesforce cache 6 | .sfdx/ 7 | .localdevserver/ 8 | 9 | # LWC VSCode autocomplete 10 | **/lwc/jsconfig.json 11 | 12 | # LWC Jest coverage reports 13 | coverage/ 14 | 15 | # Logs 16 | logs 17 | *.log 18 | npm-debug.log* 19 | yarn-debug.log* 20 | yarn-error.log* 21 | 22 | # Dependency directories 23 | node_modules/ 24 | 25 | # Eslint cache 26 | .eslintcache 27 | 28 | # MacOS system files 29 | .DS_Store 30 | 31 | # Windows system files 32 | Thumbs.db 33 | ehthumbs.db 34 | [Dd]esktop.ini 35 | $RECYCLE.BIN/ 36 | 37 | # Local environment variables 38 | .env -------------------------------------------------------------------------------- /force-app/main/default/lwc/searchLocation/searchLocation.js-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 46.0 5 | 6 | true 7 | 8 | 9 | 10 | lightning__AppPage 11 | lightningCommunity__Page 12 | lightningCommunity__Default 13 | 14 | -------------------------------------------------------------------------------- /force-app/main/default/classes/CommunitiesLandingControllerTest.cls: -------------------------------------------------------------------------------- 1 | /** 2 | * An apex page controller that takes the user to the right start page based on credentials or lack thereof 3 | */ 4 | @IsTest public with sharing class CommunitiesLandingControllerTest { 5 | @IsTest(SeeAllData=true) public static void testCommunitiesLandingController() { 6 | // Instantiate a new controller with all parameters in the page 7 | CommunitiesLandingController controller = new CommunitiesLandingController(); 8 | PageReference pageRef = controller.forwardToStartPage(); 9 | //PageRef is either null or an empty object in test context 10 | if(pageRef != null){ 11 | String url = pageRef.getUrl(); 12 | if(url != null){ 13 | System.assertEquals(true, String.isEmpty(url)); 14 | //show up in perforce 15 | } 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /force-app/main/default/lwc/filterRestaurant/filterRestaurant.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /force-app/main/default/classes/CommunitiesSelfRegControllerTest.cls: -------------------------------------------------------------------------------- 1 | /** 2 | * An apex page controller that supports self registration of users in communities that allow self registration 3 | */ 4 | @IsTest public with sharing class CommunitiesSelfRegControllerTest { 5 | @IsTest(SeeAllData=true) 6 | public static void testCommunitiesSelfRegController() { 7 | CommunitiesSelfRegController controller = new CommunitiesSelfRegController(); 8 | controller.firstName = 'FirstName'; 9 | controller.lastName = 'LastName'; 10 | controller.email = 'test@force.com'; 11 | controller.communityNickname = 'test'; 12 | 13 | // registerUser will always return null when the page isn't accessed as a guest user 14 | System.assert(controller.registerUser() == null); 15 | 16 | controller.password = 'abcd1234'; 17 | controller.confirmPassword = 'abcd123'; 18 | System.assert(controller.registerUser() == null); 19 | } 20 | } -------------------------------------------------------------------------------- /force-app/main/default/pages/StdExceptionTemplate.page: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 |
6 |
7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 20 |
21 |
22 |
23 |
-------------------------------------------------------------------------------- /force-app/main/default/classes/LightningLoginFormControllerTest.cls: -------------------------------------------------------------------------------- 1 | @IsTest(SeeAllData = true) 2 | public with sharing class LightningLoginFormControllerTest { 3 | 4 | @IsTest 5 | static void LightningLoginFormControllerInstantiation() { 6 | LightningLoginFormController controller = new LightningLoginFormController(); 7 | System.assertNotEquals(controller, null); 8 | } 9 | 10 | @IsTest 11 | static void testIsUsernamePasswordEnabled() { 12 | System.assertEquals(true, LightningLoginFormController.getIsUsernamePasswordEnabled()); 13 | } 14 | 15 | @IsTest 16 | static void testIsSelfRegistrationEnabled() { 17 | System.assertEquals(false, LightningLoginFormController.getIsSelfRegistrationEnabled()); 18 | } 19 | 20 | @IsTest 21 | static void testGetSelfRegistrationURL() { 22 | System.assertEquals(null, LightningLoginFormController.getSelfRegistrationUrl()); 23 | } 24 | 25 | @IsTest 26 | static void testAuthConfig() { 27 | Auth.AuthConfiguration authConfig = LightningLoginFormController.getAuthConfig(); 28 | System.assertNotEquals(null, authConfig); 29 | } 30 | } -------------------------------------------------------------------------------- /force-app/main/default/assignmentRules/Lead.assignmentRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Standard 5 | true 6 | 7 | sf_psl_hackathon@august2021.com 8 | User 9 | 10 | Lead.Country 11 | equals 12 | US,USA,United States,United States of America 13 | 14 | 15 | 16 | sf_psl_hackathon@august2021.com 17 | User 18 | 19 | Lead.Country 20 | notEqual 21 | US,USA,United States,United States of America 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /force-app/main/default/classes/LightningForgotPasswordController.cls: -------------------------------------------------------------------------------- 1 | global class LightningForgotPasswordController { 2 | 3 | public LightningForgotPasswordController() { 4 | 5 | } 6 | 7 | @AuraEnabled 8 | public static String forgotPassword(String username, String checkEmailUrl) { 9 | try { 10 | Site.forgotPassword(username); 11 | ApexPages.PageReference checkEmailRef = new PageReference(checkEmailUrl); 12 | if(!Site.isValidUsername(username)) { 13 | return Label.Site.invalid_email; 14 | } 15 | aura.redirect(checkEmailRef); 16 | return null; 17 | } 18 | catch (Exception ex) { 19 | return ex.getMessage(); 20 | } 21 | } 22 | 23 | @AuraEnabled 24 | global static String setExperienceId(String expId) { 25 | // Return null if there is no error, else it will return the error message 26 | try { 27 | if (expId != null) { 28 | Site.setExperienceId(expId); 29 | } 30 | return null; 31 | } catch (Exception ex) { 32 | return ex.getMessage(); 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /force-app/main/default/classes/ZomatoClass.cls: -------------------------------------------------------------------------------- 1 | global without sharing class ZomatoClass { 2 | //Used to get entityId and entityType 3 | @AuraEnabled 4 | public static String getLocation(String locationName) { 5 | //Get the base url of Zomato API from custom label 6 | String url = System.Label.Zomato_API_URL; 7 | url += +'locations'; 8 | //Get the API key of Zomato from custom label 9 | String userKey = System.Label.ZomatoAPIKey; 10 | String reponse; 11 | // Instantiate a new http object 12 | Http h = new Http(); 13 | url += '?query='+locationName; 14 | // Instantiate a new HTTP request, specify the method (GET) as well as the endpoint 15 | HttpRequest req = new HttpRequest(); 16 | req.setEndpoint(url); 17 | req.setHeader('Content-Type', 'application/json'); 18 | req.setHeader('user-key', userKey); 19 | req.setMethod('GET'); 20 | 21 | // Send the request, and return a response 22 | HttpResponse res = h.send(req); 23 | reponse = res.getBody(); 24 | if(res.getStatusCode() == 200 && res.getBody() != null){ 25 | return reponse; 26 | } 27 | return null; 28 | } 29 | } -------------------------------------------------------------------------------- /force-app/main/default/components/SiteHeader.component: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {!$Label.site.login_button} 7 | 8 | {!$Label.site.forgot_your_password_q} 9 | 10 | {!$Label.site.new_user_q} 11 | 12 | {!$Label.site.logout} 13 | 14 | 15 | -------------------------------------------------------------------------------- /force-app/main/default/pages/SiteLogin.page: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 |
7 |
8 | 9 |
10 | 11 | 12 | 13 | 14 |
15 | 16 |
17 | 18 |
19 |
20 |
21 |
22 | 23 |
24 |
25 |
26 |
27 |
28 |
29 |
-------------------------------------------------------------------------------- /force-app/main/default/components/SiteLogin.component: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | {!$Label.site.forgot_your_password_q} 17 | 18 | {!$Label.site.new_user_q} 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /force-app/main/default/workflows/MetroWallet__c.workflow-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Low_Wallet_Balance 5 | Low Wallet Balance 6 | false 7 | 8 | creator 9 | 10 | DefaultWorkflowUser 11 | 12 | 13 | 14 | MetroWallet Rule1 15 | 16 | Low_Wallet_Balance 17 | Alert 18 | 19 | true 20 | 1 AND 2 21 | 22 | MetroWallet__c.WalletBalance__c 23 | lessOrEqual 24 | 100 25 | 26 | 27 | MetroWallet__c.OwnerId 28 | equals 29 | Ashish Salunkhe 30 | 31 | Rule for wallet balance 32 | onCreateOrTriggeringUpdate 33 | 34 | 35 | -------------------------------------------------------------------------------- /force-app/main/default/lwc/searchLocation/searchLocation.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /force-app/main/default/pages/ForgotPasswordConfirm.page: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 |
7 |
8 | 9 |
10 | 11 | 12 | 13 | 14 |
15 | 16 |
17 |
18 | {!$Label.site.go_to_login_page} 19 |
20 |
21 |
22 |
23 | 24 |
25 |
26 |
27 |
28 |
29 |
30 |
-------------------------------------------------------------------------------- /force-app/main/default/classes/LightningForgotPasswordControllerTest.cls: -------------------------------------------------------------------------------- 1 | @IsTest(SeeAllData = true) 2 | public with sharing class LightningForgotPasswordControllerTest { 3 | 4 | /* Verifies that ForgotPasswordController handles invalid usernames appropriately */ 5 | @IsTest 6 | static void testLightningForgotPasswordControllerInvalidUserName() { 7 | System.assertEquals(LightningForgotPasswordController.forgotPassword('fakeUser', 'http://a.com'), Label.Site.invalid_email); 8 | System.assertEquals(LightningForgotPasswordController.forgotPassword(null, 'http://a.com'), Label.Site.invalid_email); 9 | System.assertEquals(LightningForgotPasswordController.forgotPassword('a', '/home/home.jsp'), Label.Site.invalid_email); 10 | } 11 | 12 | /* Verifies that null checkEmailRef url throws proper exception. */ 13 | @IsTest 14 | static void testLightningForgotPasswordControllerWithNullCheckEmailRef() { 15 | System.assertEquals(LightningForgotPasswordController.forgotPassword('a', null), 'Argument 1 cannot be null'); 16 | System.assertEquals(LightningForgotPasswordController.forgotPassword('a@salesforce.com', null), 'Argument 1 cannot be null'); 17 | } 18 | 19 | /* Verifies that LightningForgotPasswordController object is instantiated correctly. */ 20 | @IsTest 21 | static void LightningForgotPasswordControllerInstantiation() { 22 | LightningForgotPasswordController controller = new LightningForgotPasswordController(); 23 | System.assertNotEquals(controller, null); 24 | } 25 | } -------------------------------------------------------------------------------- /force-app/main/default/pages/SiteRegisterConfirm.page: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 |
7 |
8 | 9 |
10 | 11 | 12 | 13 | 14 |
15 | 16 |
17 |
18 | {!$Label.site.go_to_login_page} 19 |
20 |
21 |
22 |
23 | 24 |
25 |
26 |
27 |
28 |
29 |
30 |
-------------------------------------------------------------------------------- /force-app/main/default/pages/CommunitiesSelfRegConfirm.page: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 |
6 |
7 | 8 |
9 | 10 | 11 | 12 | 13 |
14 | 15 |
16 |
17 | {!$Label.site.go_to_login_page} 18 |
19 |
20 |
21 |
22 | 23 |
24 |
25 |
26 |
27 |
28 |
-------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "salesforce-app", 3 | "private": true, 4 | "version": "1.0.0", 5 | "description": "Salesforce App", 6 | "scripts": { 7 | "lint": "npm run lint:lwc && npm run lint:aura", 8 | "lint:aura": "eslint **/aura/**", 9 | "lint:lwc": "eslint **/lwc/**", 10 | "test": "npm run test:unit", 11 | "test:unit": "sfdx-lwc-jest", 12 | "test:unit:watch": "sfdx-lwc-jest --watch", 13 | "test:unit:debug": "sfdx-lwc-jest --debug", 14 | "test:unit:coverage": "sfdx-lwc-jest --coverage", 15 | "prettier": "prettier --write \"**/*.{cls,cmp,component,css,html,js,json,md,page,trigger,xml,yaml,yml}\"", 16 | "prettier:verify": "prettier --list-different \"**/*.{cls,cmp,component,css,html,js,json,md,page,trigger,xml,yaml,yml}\"" 17 | }, 18 | "devDependencies": { 19 | "@prettier/plugin-xml": "^0.12.0", 20 | "@salesforce/eslint-config-lwc": "^0.11.0", 21 | "@salesforce/eslint-plugin-aura": "^2.0.0", 22 | "@salesforce/sfdx-lwc-jest": "^0.10.4", 23 | "eslint": "^7.24.0", 24 | "eslint-config-prettier": "^6.11.0", 25 | "husky": "^4.2.1", 26 | "lint-staged": "^10.0.7", 27 | "prettier": "^2.0.5", 28 | "prettier-plugin-apex": "^1.6.0" 29 | }, 30 | "husky": { 31 | "hooks": { 32 | "pre-commit": "lint-staged" 33 | } 34 | }, 35 | "lint-staged": { 36 | "**/*.{cls,cmp,component,css,html,js,json,md,page,trigger,xml,yaml,yml}": [ 37 | "prettier --write" 38 | ], 39 | "**/{aura|lwc}/**": [ 40 | "eslint" 41 | ] 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /force-app/main/default/pages/FileNotFound.page: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 |
7 |
8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 |
22 |
23 |
24 | 25 |
26 |
27 |
28 |
29 |
30 | 31 |
-------------------------------------------------------------------------------- /force-app/main/default/EmbeddedServiceLiveAgent/MahametroLink_Chat_Agents.EmbeddedServiceLiveAgent-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | MahametroLink_Chat_Agents 4 | 5 | MahametroLink_Chat_Agents 6 | 1 7 | Snapins_Contact_PrechatQuickAction_08h5g000000sZJu_1627377635815 8 | Prechat 9 | 10 | 11 | MahametroLink_Chat_Agents 12 | 2 13 | Snapins_Case_PrechatQuickAction_08h5g000000sZJu_1627377635855 14 | Prechat 15 | 16 | true 17 | Medium 18 | false 19 | false 20 | MahametroLink_Chat_Agents 21 | live_agent_setup_flow 22 | MahametroLink Chat Agents 23 | false 24 | Service 25 | 26 | -------------------------------------------------------------------------------- /force-app/main/default/pages/Exception.page: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 |
7 |
8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 |
21 |
22 |
23 |
24 | 25 |
26 |
27 | 28 |
29 |
30 |
31 |
32 |
33 |
-------------------------------------------------------------------------------- /force-app/main/default/entitlementProcesses/standard case.entitlementProcess-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Case 4 | true 5 | Runs the standard SLA process for Case. 6 | Case.CreatedDate 7 | 8 | Case.IsClosed 9 | equals 10 | true 11 | 12 | 13 | First Response to Customer 14 | 240 15 | 16 | 17 | ChangePriorityToHigh 18 | FieldUpdate 19 | 20 | -60 21 | Minutes 22 | 23 | false 24 | 25 | 26 | Escalate Case 27 | 1440 28 | false 29 | 30 | 31 | Close Case 32 | 5760 33 | false 34 | 35 | 36 | -------------------------------------------------------------------------------- /force-app/main/default/lwc/displayRestaurants/displayRestaurants.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /force-app/main/default/sites/MahaMetroLink.site-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | true 4 | false 5 | false 6 | false 7 | false 8 | true 9 | false 10 | CommunitiesLogin 11 | BandwidthExceeded 12 | true 13 | SameOriginOnly 14 | true 15 | true 16 | true 17 | FileNotFound 18 | Exception 19 | InMaintenance 20 | CommunitiesLanding 21 | MahaMetroLink 22 | true 23 | true 24 | CommunitiesSelfReg 25 | sf_psl_hackathon@august2021.com 26 | sf_psl_hackathon@august2021.com 27 | ChatterNetwork 28 | mahametrolink-developer-edition 29 | 30 | -------------------------------------------------------------------------------- /force-app/main/default/sites/MahaMetroLinkPune.site-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | true 4 | false 5 | false 6 | false 7 | false 8 | true 9 | false 10 | CommunitiesLogin 11 | BandwidthExceeded 12 | true 13 | SameOriginOnly 14 | true 15 | true 16 | true 17 | FileNotFound 18 | Exception 19 | InMaintenance 20 | CommunitiesLanding 21 | MahaMetroLinkPune 22 | true 23 | true 24 | CommunitiesSelfReg 25 | ashish_salunkhe@persistent.com.sfhack 26 | ashish_salunkhe@persistent.com.sfhack 27 | ChatterNetwork 28 | mahametrolink-developer-edition 29 | MahaMetroLinkPune 30 | 31 | -------------------------------------------------------------------------------- /force-app/main/default/classes/MyProfilePageController.cls: -------------------------------------------------------------------------------- 1 | /** 2 | * An apex class that updates portal user details. 3 | Guest users are never able to access this page. 4 | */ 5 | public with sharing class MyProfilePageController { 6 | 7 | private User user; 8 | private boolean isEdit = false; 9 | 10 | public User getUser() { 11 | return user; 12 | } 13 | 14 | public MyProfilePageController() { 15 | user = [SELECT id, email, username, usertype, communitynickname, timezonesidkey, languagelocalekey, firstname, lastname, phone, title, 16 | street, city, country, postalcode, state, localesidkey, mobilephone, extension, fax, contact.email 17 | FROM User 18 | WHERE id = :UserInfo.getUserId()]; 19 | // guest users should never be able to access this page 20 | if (user.usertype == 'GUEST') { 21 | throw new NoAccessException(); 22 | } 23 | } 24 | 25 | public Boolean getIsEdit() { 26 | return isEdit; 27 | } 28 | 29 | public void edit() { 30 | isEdit=true; 31 | } 32 | 33 | public void save() { 34 | try { 35 | update user; 36 | isEdit=false; 37 | } catch(DmlException e) { 38 | ApexPages.addMessages(e); 39 | } 40 | } 41 | 42 | public PageReference changePassword() { 43 | return Page.ChangePassword; 44 | } 45 | 46 | public void cancel() { 47 | isEdit=false; 48 | user = [SELECT id, email, username, communitynickname, timezonesidkey, languagelocalekey, firstname, lastname, phone, title, 49 | street, city, country, postalcode, state, localesidkey, mobilephone, extension, fax, contact.email 50 | FROM User 51 | WHERE id = :UserInfo.getUserId()]; 52 | } 53 | } -------------------------------------------------------------------------------- /force-app/main/default/sites/Customer_Support_Community.site-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | false 4 | false 5 | false 6 | false 7 | false 8 | true 9 | false 10 | CommunitiesLogin 11 | BandwidthExceeded 12 | true 13 | SameOriginOnly 14 | true 15 | true 16 | true 17 | FileNotFound 18 | Exception 19 | InMaintenance 20 | CommunitiesLanding 21 | Customer Support Community 22 | true 23 | true 24 | CommunitiesSelfReg 25 | ashish_salunkhe@persistent.com.sfhack 26 | ashish_salunkhe@persistent.com.sfhack 27 | ChatterNetwork 28 | mahametrolink-developer-edition 29 | MahaMetroLink 30 | 31 | -------------------------------------------------------------------------------- /force-app/main/default/pages/ForgotPassword.page: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 |
7 |
8 | 9 |
10 | 11 | 12 | 13 | 14 |
15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 |
28 |
29 | 30 |
31 |
32 |
33 |
34 |
35 |
36 |
-------------------------------------------------------------------------------- /force-app/main/default/pages/Unauthorized.page: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 |
7 |
8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 |
18 | 19 |
20 | 21 |
22 |
23 |
24 | 25 | 26 | 27 |
28 |
29 |
30 | 31 |
32 |
33 |
34 |
35 |
36 |
37 | 38 |
-------------------------------------------------------------------------------- /force-app/main/default/pages/CommunitiesSelfReg.page: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 |
24 |
25 |
26 |
27 | 28 |
-------------------------------------------------------------------------------- /force-app/main/default/classes/LightningLoginFormController.cls: -------------------------------------------------------------------------------- 1 | global class LightningLoginFormController { 2 | 3 | public LightningLoginFormController() { 4 | 5 | } 6 | 7 | @AuraEnabled 8 | public static String login(String username, String password, String startUrl) { 9 | try{ 10 | ApexPages.PageReference lgn = Site.login(username, password, startUrl); 11 | aura.redirect(lgn); 12 | return null; 13 | } 14 | catch (Exception ex) { 15 | return ex.getMessage(); 16 | } 17 | } 18 | 19 | @AuraEnabled 20 | public static Boolean getIsUsernamePasswordEnabled() { 21 | Auth.AuthConfiguration authConfig = getAuthConfig(); 22 | return authConfig.getUsernamePasswordEnabled(); 23 | } 24 | 25 | @AuraEnabled 26 | public static Boolean getIsSelfRegistrationEnabled() { 27 | Auth.AuthConfiguration authConfig = getAuthConfig(); 28 | return authConfig.getSelfRegistrationEnabled(); 29 | } 30 | 31 | @AuraEnabled 32 | public static String getSelfRegistrationUrl() { 33 | Auth.AuthConfiguration authConfig = getAuthConfig(); 34 | if (authConfig.getSelfRegistrationEnabled()) { 35 | return authConfig.getSelfRegistrationUrl(); 36 | } 37 | return null; 38 | } 39 | 40 | @AuraEnabled 41 | public static String getForgotPasswordUrl() { 42 | Auth.AuthConfiguration authConfig = getAuthConfig(); 43 | return authConfig.getForgotPasswordUrl(); 44 | } 45 | 46 | @TestVisible 47 | private static Auth.AuthConfiguration getAuthConfig(){ 48 | Id networkId = Network.getNetworkId(); 49 | Auth.AuthConfiguration authConfig = new Auth.AuthConfiguration(networkId,''); 50 | return authConfig; 51 | } 52 | 53 | @AuraEnabled 54 | global static String setExperienceId(String expId) { 55 | // Return null if there is no error, else it will return the error message 56 | try { 57 | if (expId != null) { 58 | Site.setExperienceId(expId); 59 | } 60 | return null; 61 | } catch (Exception ex) { 62 | return ex.getMessage(); 63 | } 64 | } 65 | } -------------------------------------------------------------------------------- /force-app/main/default/classes/SiteRegisterController.cls: -------------------------------------------------------------------------------- 1 | /** 2 | * An apex class that creates a portal user 3 | */ 4 | public with sharing class SiteRegisterController { 5 | // PORTAL_ACCOUNT_ID is the account on which the contact will be created on and then enabled as a portal user. 6 | // you need to add the account owner into the role hierarchy before this will work - please see Customer Portal Setup help for more information. 7 | private static Id PORTAL_ACCOUNT_ID = '001x000xxx35tPN'; 8 | 9 | public SiteRegisterController () { 10 | } 11 | 12 | public String username {get; set;} 13 | public String email {get; set;} 14 | public String password {get; set {password = value == null ? value : value.trim(); } } 15 | public String confirmPassword {get; set { confirmPassword = value == null ? value : value.trim(); } } 16 | public String communityNickname {get; set { communityNickname = value == null ? value : value.trim(); } } 17 | 18 | private boolean isValidPassword() { 19 | return password == confirmPassword; 20 | } 21 | 22 | public PageReference registerUser() { 23 | // it's okay if password is null - we'll send the user a random password in that case 24 | if (!isValidPassword()) { 25 | ApexPages.Message msg = new ApexPages.Message(ApexPages.Severity.ERROR, Label.site.passwords_dont_match); 26 | ApexPages.addMessage(msg); 27 | return null; 28 | } 29 | User u = new User(); 30 | u.Username = username; 31 | u.Email = email; 32 | u.CommunityNickname = communityNickname; 33 | 34 | String accountId = PORTAL_ACCOUNT_ID; 35 | 36 | // lastName is a required field on user, but if it isn't specified, we'll default it to the username 37 | String userId = Site.createPortalUser(u, accountId, password); 38 | if (userId != null) { 39 | if (password != null && password.length() > 1) { 40 | return Site.login(username, password, null); 41 | } 42 | else { 43 | PageReference page = System.Page.SiteRegisterConfirm; 44 | page.setRedirect(true); 45 | return page; 46 | } 47 | } 48 | return null; 49 | } 50 | } -------------------------------------------------------------------------------- /force-app/main/default/entitlementProcesses/metro support process.entitlementProcess-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Case 4 | true 5 | Case.CreatedDate 6 | 7 | Case.IsClosed 8 | equals 9 | true 10 | 11 | 12 | 13 | Case.Priority 14 | equals 15 | High 16 | 17 | Resolution Time 18 | 360 19 | 20 | 21 | X45mins_left 22 | Alert 23 | 24 | -45 25 | Minutes 26 | 27 | false 28 | 29 | 30 | 31 | Case.Priority 32 | equals 33 | Medium, Low 34 | 35 | Resolution Time 36 | 840 37 | false 38 | 39 | 40 | 41 | Case.Priority 42 | equals 43 | High, Medium, Low 44 | 45 | Initial Response 46 | 20 47 | 48 | Initial_Response 49 | Task 50 | 51 | false 52 | 53 | 54 | -------------------------------------------------------------------------------- /force-app/main/default/pages/ChangePassword.page: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 |
7 |
8 | 9 |
10 | 11 | 12 | 13 | 14 |
15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
32 |
33 |
34 | 35 |
36 |
37 |
38 |
39 |
40 |
41 |
-------------------------------------------------------------------------------- /force-app/main/default/lwc/searchLocation/searchLocation.js: -------------------------------------------------------------------------------- 1 | import { LightningElement, track, wire} from 'lwc'; 2 | // import getLocation method from Apex Class ZomatoClass 3 | import getLocation from '@salesforce/apex/ZomatoClass.getLocation'; 4 | // To fire an event using Publish–Subscribe Pattern, import CurrentPageReference and fireEvent 5 | import { CurrentPageReference } from 'lightning/navigation'; 6 | import { fireEvent } from 'c/pubsub'; 7 | import { ShowToastEvent } from 'lightning/platformShowToastEvent' 8 | //Extend LightningElement to create a JavaScript class for a Lightning web component. 9 | export default class Zomato extends LightningElement { 10 | location = ''; 11 | entityId = ''; 12 | entityType = ''; 13 | // To read Salesforce CurrentPageReference, below reactive wire service has been used. 14 | @wire(CurrentPageReference) pageRef; 15 | 16 | /* Method to capture the value of entered location in the html input element */ 17 | handleLocationChange(event) { 18 | this.location = event.target.value; 19 | } 20 | /* This Method will make Zomato REST API call through APEX to get the location details 21 | * such as entity Id, entity type etc based on location name 22 | */ 23 | selectLocation() { 24 | getLocation({ 'locationName' : this.location }) 25 | .then(result => { 26 | const output = JSON.parse(result); 27 | const location_suggestions = output.location_suggestions; 28 | this.error = undefined; 29 | if(location_suggestions !== undefined) { 30 | this.entityId = location_suggestions[0].entity_id; 31 | this.entityType = location_suggestions[0].entity_type; 32 | if(this.entityId != null && this.entityType != null){ 33 | fireEvent(this.pageRef,'displayRestaurantsPage',location_suggestions[0]); 34 | } 35 | } 36 | else { 37 | console.log("No info returned in call back in selectLocation method"); 38 | } 39 | }) 40 | .catch(error => { 41 | this.error = error; 42 | this.dispatchEvent( 43 | new ShowToastEvent({ 44 | title: 'Error!!!', 45 | message: error.body.message, 46 | variant: 'error', 47 | }), 48 | ); 49 | console.log("error", JSON.stringify(this.error)); 50 | }); 51 | } 52 | } -------------------------------------------------------------------------------- /force-app/main/default/pages/SiteRegister.page: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 |
7 |
8 | 9 |
10 | 11 | 12 | 13 | 14 |
15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 |
35 |
36 |
37 |
38 | 39 |
40 |
41 |
42 |
43 |
44 |
45 |
-------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # MahaMetroLink 2 | ## _Solution to Salesforce Days Virtual Hackathon 2021 @ Persistent Systems_ 3 | [![Build Status](https://travis-ci.org/joemccann/dillinger.svg?branch=master)](https://github.com/ashishsalunkhe/salesforce-hackathon-team-speedforce) 4 | 5 | MahaMetroLink is a proposed solution for service support staff by using as an engagement layer on Salesforce Platform giving metro employees / service-desk a central place to review sales history, customer accounts and their balance, address customer service inquiries, manage cases and provide more features to public-customers across account based transit. 6 | 7 | ## Functionalities 8 | 9 | - Check Metro Schedules 10 | - Book Tickets 11 | - Check Booking and Transit History 12 | - Search Nearby Restaurants 13 | - Search Nearby Hospitals 14 | - Raise Support Service Request 15 | - Chatbot 16 | - Live Agent Service 17 | - Payment Services 18 | 19 | 20 | ## Tech 21 | 22 | 23 | - [Lightning Web Components](https://trailhead.salesforce.com/en/content/learn/modules/lightning-web-components-basics) 24 | - [Apex](https://trailhead.salesforce.com/en/content/learn/modules/apex_database) 25 | - [Aura](https://trailhead.salesforce.com/en/content/learn/modules/lex_dev_lc_basics) 26 | - [Zomato API](https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwiokrPm7sLyAhX9lEsFHY7IDL0QFnoECAMQAQ&url=https%3A%2F%2Fapp.swaggerhub.com%2Fapis-docs%2FVivek-Raj%2Fzomato-api%2F1.0.0&usg=AOvVaw215j4b3DB4HLiPRvTTmzjQ) 27 | - [Workflow Rules](https://trailhead.salesforce.com/en/content/learn/projects/create-a-process-for-managing-support-cases) 28 | - [Service Cloud](https://trailhead.salesforce.com/en/content/learn/trails/service_cloud_move) 29 | 30 | 31 | ## Installation 32 | 33 | Clone the repository 34 | 35 | ```sh 36 | git clone https://github.com/ashishsalunkhe/salesforce-hackathon-team-speedforce.git 37 | cd salesforce-hackathon-team-speedforce 38 | ``` 39 | After Clone 40 | ```sh 41 | Connect your org to project 42 | Select Development Environment 43 | Setup project alias 44 | Setup project url 45 | Connect org 46 | Fetch existing files on force-app 47 | Deploy the files using Salesforce VSCode Extension 48 | ``` 49 | 50 | 51 | 52 | **Please cite and contact developers if you refer the code and use it** 53 | Developers: [Ashish Salunkhe], [Dharmraj Sharma], [Megha Mane] 54 | Contact: avsalunkhe98@gmail.com 55 | 56 | [//]: # (These are reference links used in the body of this note and get stripped out when the markdown processor does its job. There is no need to format nicely because it shouldn't be seen. Thanks SO - http://stackoverflow.com/questions/4823468/store-comments-in-markdown-syntax) 57 | 58 | 59 | [git-repo-url]: 60 | [ashish salunkhe]: 61 | [dharmraj sharma]: 62 | [megha mane]: 63 | 64 | -------------------------------------------------------------------------------- /force-app/main/default/classes/MyProfilePageControllerTest.cls: -------------------------------------------------------------------------------- 1 | /** 2 | * An apex class that updates details of a portal user. 3 | Guest users are never able to access this page. 4 | */ 5 | @IsTest public with sharing class MyProfilePageControllerTest { 6 | 7 | @IsTest(SeeAllData=true) static void testSave() { 8 | // Modify the test to query for a portal user that exists in your org 9 | List existingPortalUsers = [SELECT id, profileId, userRoleId FROM User WHERE UserRoleId <> null AND UserType='CustomerSuccess']; 10 | 11 | if (existingPortalUsers.isEmpty()) { 12 | User currentUser = [select id, title, firstname, lastname, email, phone, mobilephone, fax, street, city, state, postalcode, country 13 | FROM User WHERE id =: UserInfo.getUserId()]; 14 | MyProfilePageController controller = new MyProfilePageController(); 15 | System.assertEquals(currentUser.Id, controller.getUser().Id, 'Did not successfully load the current user'); 16 | System.assert(controller.getIsEdit() == false, 'isEdit should default to false'); 17 | controller.edit(); 18 | System.assert(controller.getIsEdit() == true); 19 | controller.cancel(); 20 | System.assert(controller.getIsEdit() == false); 21 | 22 | System.assert(Page.ChangePassword.getUrl().equals(controller.changePassword().getUrl())); 23 | 24 | String randFax = Math.rint(Math.random() * 1000) + '5551234'; 25 | controller.getUser().Fax = randFax; 26 | controller.save(); 27 | System.assert(controller.getIsEdit() == false); 28 | 29 | currentUser = [Select id, fax from User where id =: currentUser.Id]; 30 | System.assert(currentUser.fax == randFax); 31 | } else { 32 | User existingPortalUser = existingPortalUsers[0]; 33 | String randFax = Math.rint(Math.random() * 1000) + '5551234'; 34 | 35 | System.runAs(existingPortalUser) { 36 | MyProfilePageController controller = new MyProfilePageController(); 37 | System.assertEquals(existingPortalUser.Id, controller.getUser().Id, 'Did not successfully load the current user'); 38 | System.assert(controller.getIsEdit() == false, 'isEdit should default to false'); 39 | controller.edit(); 40 | System.assert(controller.getIsEdit() == true); 41 | 42 | controller.cancel(); 43 | System.assert(controller.getIsEdit() == false); 44 | 45 | controller.getUser().Fax = randFax; 46 | controller.save(); 47 | System.assert(controller.getIsEdit() == false); 48 | } 49 | 50 | // verify that the user was updated 51 | existingPortalUser = [Select id, fax from User where id =: existingPortalUser.Id]; 52 | System.assert(existingPortalUser.fax == randFax); 53 | } 54 | } 55 | } -------------------------------------------------------------------------------- /force-app/main/default/lwc/displayRestaurants/displayRestaurants.js: -------------------------------------------------------------------------------- 1 | import { LightningElement, wire, track } from 'lwc'; 2 | // The pub-sub module checks for page references when firing events, 3 | // so that the event is scoped and only in the current page. 4 | import { registerListener, unregisterAllListeners } from 'c/pubsub'; 5 | import { CurrentPageReference } from 'lightning/navigation'; 6 | // Import custom labels 7 | import zomatoApiUrl from '@salesforce/label/c.Zomato_API_URL'; 8 | import zomatoUserKey from '@salesforce/label/c.ZomatoAPIKey'; 9 | 10 | //Extend LightningElement to create a JavaScript class for a Lightning web component. 11 | export default class SearchRestaurants extends LightningElement { 12 | @track restaurantsList =[]; 13 | @wire(CurrentPageReference) pageRef; 14 | 15 | //In connectedCallback we subscribe to the event, In disconnectedCallback we un-subscribe. 16 | connectedCallback(){ 17 | // Registers a callback for an event 18 | // @param {string} eventName - Name of the event to listen for. 19 | // @param {function} callback - Function to invoke when said event is fired. 20 | // @param {object} this - The value to be passed as the this parameter to the callback function is bound. 21 | registerListener('displayRestaurantsPage',this.handleRestaurantList,this); 22 | } 23 | disconnectedCallback(){ 24 | // Unregisters all event listeners bound to an object. 25 | // @param {object} this - All the callbacks bound to this object will be removed. 26 | unregisterAllListeners(this); 27 | } 28 | 29 | /* This method will make Zomato REST API callout through javaScript not APEX 30 | * to get the best rated restaurants based on location(ie. entity id and entity type) 31 | */ 32 | searchRestaurant(locationDetails) { 33 | let url = zomatoApiUrl; 34 | url = url+'location_details?entity_id='+locationDetails.entity_id; 35 | url = url+'&entity_type='+locationDetails.entity_type; 36 | //The Fetch API provides a JavaScript interface for accessing and manipulating parts of the HTTP pipeline, 37 | //such as requests and responses. 38 | fetch(url, 39 | { 40 | method : "GET", 41 | headers : { 42 | "Content-Type": "application/json", 43 | "user-key": zomatoUserKey 44 | } 45 | }) 46 | .then((response) => { 47 | if (!response.ok) { 48 | throw new Error('Network response was not ok'); 49 | } 50 | return response.json(); 51 | }) 52 | .then((responseJSON) => { 53 | this.restaurantsList = responseJSON.best_rated_restaurant; 54 | }) 55 | .catch((error) => { 56 | console.error('There has been a problem with your fetch operation:', error); 57 | }); 58 | } 59 | 60 | handleRestaurantList(locationDetails){ 61 | this.searchRestaurant(locationDetails); 62 | } 63 | 64 | } -------------------------------------------------------------------------------- /force-app/main/default/classes/CommunitiesSelfRegController.cls: -------------------------------------------------------------------------------- 1 | /** 2 | * An apex page controller that supports self registration of users in communities that allow self registration 3 | */ 4 | public class CommunitiesSelfRegController { 5 | 6 | public String firstName {get; set;} 7 | public String lastName {get; set;} 8 | public String email {get; set;} 9 | public String password {get; set {password = value == null ? value : value.trim(); } } 10 | public String confirmPassword {get; set { confirmPassword = value == null ? value : value.trim(); } } 11 | public String communityNickname {get; set { communityNickname = value == null ? value : value.trim(); } } 12 | 13 | public CommunitiesSelfRegController() { 14 | String expid = ApexPages.currentPage().getParameters().get('expid'); 15 | if (expId != null) { 16 | Site.setExperienceId(expId); 17 | } 18 | } 19 | 20 | private boolean isValidPassword() { 21 | return password == confirmPassword; 22 | } 23 | 24 | public PageReference registerUser() { 25 | 26 | // it's okay if password is null - we'll send the user a random password in that case 27 | if (!isValidPassword()) { 28 | ApexPages.Message msg = new ApexPages.Message(ApexPages.Severity.ERROR, Label.site.passwords_dont_match); 29 | ApexPages.addMessage(msg); 30 | return null; 31 | } 32 | 33 | String profileId = null; // To be filled in by customer. 34 | String roleEnum = null; // To be filled in by customer. 35 | String accountId = ''; // To be filled in by customer. 36 | 37 | String userName = email; 38 | 39 | User u = new User(); 40 | u.Username = userName; 41 | u.Email = email; 42 | u.FirstName = firstName; 43 | u.LastName = lastName; 44 | u.CommunityNickname = communityNickname; 45 | u.ProfileId = profileId; 46 | 47 | String userId; 48 | 49 | try { 50 | userId = Site.createExternalUser(u, accountId, password); 51 | } catch(Site.ExternalUserCreateException ex) { 52 | List errors = ex.getDisplayMessages(); 53 | for (String error : errors) { 54 | ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, error)); 55 | } 56 | 57 | // This message is used for debugging. Do not display this in the UI to the end user. 58 | // It has the information around why the user creation failed. 59 | System.debug(ex.getMessage()); 60 | } 61 | 62 | if (userId != null) { 63 | if (password != null && password.length() > 1) { 64 | return Site.login(userName, password, ApexPages.currentPage().getParameters().get('startURL')); 65 | } 66 | else { 67 | PageReference page = System.Page.CommunitiesSelfRegConfirm; 68 | page.setRedirect(true); 69 | return page; 70 | } 71 | } 72 | return null; 73 | } 74 | } -------------------------------------------------------------------------------- /force-app/main/default/pages/Web_Chat.page: -------------------------------------------------------------------------------- 1 | 2 |

Let’s start chatting...

3 |
4 | Click the button to start a chat. 5 |
6 | 7 | 16 | 17 | 18 | 69 |
-------------------------------------------------------------------------------- /force-app/main/default/lwc/contactCustomerSupport/contactCustomerSupport.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /force-app/main/default/triggers/ticketEMailTrigger.trigger: -------------------------------------------------------------------------------- 1 | trigger ticketEMailTrigger on Ticket__c (after insert) { 2 | // Create a new single email message object 3 | // that will send out a single email to the addresses in the To, CC & BCC list. 4 | Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage(); 5 | set ContactId = new set(); 6 | List mails = new List(); 7 | for (Ticket__c myContact:Trigger.new){ 8 | if (myContact.Contact__c != null ) 9 | { 10 | ContactId.add(myContact.Contact__c); 11 | } 12 | 13 | // Getting contact info 14 | Contact con = [Select firstname,lastname,email,id,name,MobilePhone from Contact where id in :ContactId]; 15 | // Step 2: Set list of people who should get the email 16 | List sendTo = new List(); 17 | sendTo.add(con.email); 18 | 19 | // Strings to hold the email addresses to which you are sending the email. 20 | //String[] toAddresses = new String[] {'ashish_salunkhe@persistent.com'}; 21 | //String[] ccAddresses = new String[] {'avsalunkhe98@gmail.com'}; 22 | // Assign the addresses for the To and CC lists to the mail object. 23 | mail.setToAddresses(sendTo); 24 | // (Optional) Set list of people who should be CC'ed 25 | List ccTo = new List(); 26 | ccTo.add('avsalunkhe98@gmail.com'); 27 | mail.setCcAddresses(ccTo); 28 | // Step 3: Set who the email is sent from 29 | mail.setReplyTo('megha_mane@persistent.com'); 30 | mail.setSenderDisplayName('MahaMetroLink Pune'); 31 | // Specify the subject line for your email address. 32 | mail.setSubject('Ticket Booking Confirmed'); 33 | String body = 'Dear ' + con.FirstName+',' +'
'+'Your ticket booking has been confirmed with Ticket Id: '+ myContact.Name+'
'; 34 | body += 'Your Transit Details:
'; 35 | body += 'Source Location: '+myContact.SourceLocation__c+'
'+'Destination Location: '+myContact.DestinationLocation__c+'
'; 36 | body += 'Boarding Time: '+myContact.BookingTime__c+'
'; 37 | body += 'Your Ticket Fare: '+myContact.Ticket_Fare__c+'
'; 38 | body += 'Your Ticket is valid till: '+myContact.BookingTimeValidity__c+'

'; 39 | body += 'Thank you for using MahaMetroLink Pune. Have a safe journey!'; 40 | 41 | //body += 'Please find your QR Code and present it at the junction if required
'; 42 | //body += IMAGE(myContact.QRCode__c); 43 | mail.setHtmlBody(body); 44 | // Set to True if you want to BCC yourself on the email. 45 | mail.setBccSender(false); 46 | // Optionally append the salesforce.com email signature to the email. 47 | // The email address of the user executing the Apex Code will be used. 48 | String signature = 'Team MetroLink'+'
'; 49 | signature += 'ticket@metrolink.com'+'
'; 50 | mail.setUseSignature(false); 51 | // Specify the text content of the email. 52 | 53 | mails.add(mail); 54 | System.debug('Email Sent Successfully to:: '+con.Email); 55 | // Send the email you have created. 56 | //Messaging.sendEmail(mails); 57 | } 58 | 59 | 60 | } -------------------------------------------------------------------------------- /force-app/main/default/lwc/pubsub/pubsub.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A basic pub-sub mechanism for sibling component communication 3 | * 4 | * TODO - adopt standard flexipage sibling communication mechanism when it's available. 5 | */ 6 | 7 | const events = {}; 8 | 9 | /** 10 | * Confirm that two page references have the same attributes 11 | * @param {object} pageRef1 - The first page reference 12 | * @param {object} pageRef2 - The second page reference 13 | */ 14 | const samePageRef = (pageRef1, pageRef2) => { 15 | const obj1 = pageRef1.attributes; 16 | const obj2 = pageRef2.attributes; 17 | return Object.keys(obj1) 18 | .concat(Object.keys(obj2)) 19 | .every(key => { 20 | return obj1[key] === obj2[key]; 21 | }); 22 | }; 23 | 24 | /** 25 | * Registers a callback for an event 26 | * @param {string} eventName - Name of the event to listen for. 27 | * @param {function} callback - Function to invoke when said event is fired. 28 | * @param {object} thisArg - The value to be passed as the this parameter to the callback function is bound. 29 | */ 30 | const registerListener = (eventName, callback, thisArg) => { 31 | // Checking that the listener has a pageRef property. We rely on that property for filtering purpose in fireEvent() 32 | if (!thisArg.pageRef) { 33 | throw new Error( 34 | 'pubsub listeners need a "@wire(CurrentPageReference) pageRef" property' 35 | ); 36 | } 37 | 38 | if (!events[eventName]) { 39 | events[eventName] = []; 40 | } 41 | const duplicate = events[eventName].find(listener => { 42 | return listener.callback === callback && listener.thisArg === thisArg; 43 | }); 44 | if (!duplicate) { 45 | events[eventName].push({ callback, thisArg }); 46 | } 47 | }; 48 | 49 | /** 50 | * Unregisters a callback for an event 51 | * @param {string} eventName - Name of the event to unregister from. 52 | * @param {function} callback - Function to unregister. 53 | * @param {object} thisArg - The value to be passed as the this parameter to the callback function is bound. 54 | */ 55 | const unregisterListener = (eventName, callback, thisArg) => { 56 | if (events[eventName]) { 57 | events[eventName] = events[eventName].filter( 58 | listener => 59 | listener.callback !== callback || listener.thisArg !== thisArg 60 | ); 61 | } 62 | }; 63 | 64 | /** 65 | * Unregisters all event listeners bound to an object. 66 | * @param {object} thisArg - All the callbacks bound to this object will be removed. 67 | */ 68 | const unregisterAllListeners = thisArg => { 69 | Object.keys(events).forEach(eventName => { 70 | events[eventName] = events[eventName].filter( 71 | listener => listener.thisArg !== thisArg 72 | ); 73 | }); 74 | }; 75 | 76 | /** 77 | * Fires an event to listeners. 78 | * @param {object} pageRef - Reference of the page that represents the event scope. 79 | * @param {string} eventName - Name of the event to fire. 80 | * @param {*} payload - Payload of the event to fire. 81 | */ 82 | const fireEvent = (pageRef, eventName, payload) => { 83 | if (events[eventName]) { 84 | const listeners = events[eventName]; 85 | listeners.forEach(listener => { 86 | if (samePageRef(pageRef, listener.thisArg.pageRef)) { 87 | try { 88 | listener.callback.call(listener.thisArg, payload); 89 | } catch (error) { 90 | // fail silently 91 | } 92 | } 93 | }); 94 | } 95 | }; 96 | 97 | export { 98 | registerListener, 99 | unregisterListener, 100 | unregisterAllListeners, 101 | fireEvent 102 | }; -------------------------------------------------------------------------------- /force-app/main/default/classes/ContactCustomerSupportController.cls: -------------------------------------------------------------------------------- 1 | public class ContactCustomerSupportController { 2 | @AuraEnabled 3 | public static ContactCustomerSupportWrapper createCase(String contactCustomerWrapper, Id recordId) 4 | { 5 | ContactCustomerSupportWrapper caseDetails = new ContactCustomerSupportWrapper(); 6 | //JSON Attributes 7 | String jsonObject; 8 | String jsonData; 9 | Case caseNew = new Case(); 10 | List updatedCaseList = new List(); 11 | try 12 | { 13 | 14 | Map cases = (Map)Json.deserializeUntyped(contactCustomerWrapper); 15 | 16 | Case caseObj = (Case)JSON.deserializeStrict(contactCustomerWrapper,Case.class); //edited 17 | 18 | //system.debug('caseObj--'+caseObj.Agreement_Value__c); 19 | List caseList = [SELECT ContactPhone,ContactEmail,Subject,Description,Status 20 | from Case 21 | where Id =: recordId Limit 1 ]; 22 | 23 | system.debug('caseList' + caseList); 24 | 25 | if(caseList.size()>0) 26 | { 27 | //caseList[0].ContactId__r.Name = caseObj.ContactId__r.Name; 28 | //caseList[0].ContactPhone = caseObj.ContactPhone; 29 | //caseList[0].ContactEmail = caseObj.ContactEmail; 30 | caseList[0].Subject = caseObj.Subject; 31 | caseList[0].Description = caseObj.Description; 32 | caseList[0].Status = caseObj.Status; 33 | 34 | 35 | system.debug('Iaddrlist[0]' + caseList[0]); 36 | updatedCaseList.add(caseList[0]); 37 | 38 | if(updatedCaseList.size()>0) 39 | { 40 | database.upsert(updatedCaseList); 41 | } 42 | 43 | else { 44 | /*MessageLogUtil.MessageLog exceptionLog=new MessageLogUtil.MessageLog(Constants.EXCEPTION_TYPE_OTHERS,Label.Invalid_Application, 45 | 'No Rows To return from SOQl',Label.Invalid_Application,Label.Invalid_Application,'','',Constants.MESSAGE_TYPE_EXCEPTION,'', 46 | 'ContactCustomerSupportWrapper','createCase','','','',''); 47 | Log_Message__c exceptionInsLog = MessageLogUtil.createExceptionMessageLog(exceptionLog); 48 | transactionDtls.isErrorOccured=true; 49 | transactionDtls.errorLog = exceptionInsLog; 50 | system.debug(exceptionLog); 51 | system.debug(loanApplciation);*/ 52 | System.debug('Error from ApexController Method'); 53 | } 54 | 55 | } 56 | 57 | else 58 | { 59 | database.insert(caseObj); 60 | caseDetails.cases =caseObj; 61 | } 62 | } 63 | 64 | catch(Exception e){ 65 | /*System.debug('Exception Details'+ex.getMessage() +'Line No :'+ ex.getLineNumber()); 66 | MessageLogUtil.MessageLog exceptionLog =new MessageLogUtil.MessageLog(ex,'Apex','Exception occured while fetching Transaction Details', 'TransactionDetailsController.insertTransactionDetails',Ex.getMessage(),Ex.getMessage(),'',Ex.getLineNumber()+'','','','TransactionDetailController','insertTransactionDetails'); 67 | Log_Message__c exceptionInsLog = MessageLogUtil.createExceptionMessageLog(exceptionLog); 68 | System.debug('exceptionLog:: '+exceptionLog); 69 | transactionDtls.isErrorOccured = true; 70 | transactionDtls.errorLog = exceptionInsLog; 71 | system.debug(exceptionLog);*/ 72 | System.debug('Error from ApexController Method' + e.getMessage()); 73 | } 74 | system.debug('ss'+caseDetails); 75 | return caseDetails; 76 | } 77 | 78 | } -------------------------------------------------------------------------------- /force-app/main/default/pages/MyProfilePage.page: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /force-app/main/default/assignmentRules/Case.assignmentRules-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Assign Case to Queue 5 | true 6 | 7 | ashish_salunkhe@persistent.com.sfhack 8 | User 9 | 10 | Case.Reason 11 | equals 12 | Login Issue 13 | 14 | 15 | Case.Status 16 | equals 17 | New 18 | 19 | 20 | 21 | Advanced_Cases 22 | Queue 23 | 24 | Case.Reason 25 | equals 26 | Payment Issue,Technical Issue 27 | 28 | 29 | 30 | ashish_salunkhe@persistent.com.sfhack 31 | User 32 | 33 | Case.Subject 34 | contains 35 | payment 36 | 37 | 38 | 39 | 40 | Standard 41 | false 42 | 43 | sf_psl_hackathon@august2021.com 44 | User 45 | 46 | Account.BillingCountry 47 | equals 48 | US,USA,United States,United States of America 49 | 50 | 51 | Account.SLA__c 52 | equals 53 | Gold,Platinum 54 | 55 | 56 | Account.Type 57 | contains 58 | Customer 59 | 60 | 61 | 62 | sf_psl_hackathon@august2021.com 63 | User 64 | 65 | Account.BillingCountry 66 | equals 67 | US,USA,United States,United States of America 68 | 69 | 70 | Account.SLA__c 71 | equals 72 | Silver,Bronze 73 | 74 | 75 | Account.Type 76 | contains 77 | Customer 78 | 79 | 80 | 81 | sf_psl_hackathon@august2021.com 82 | User 83 | 84 | Account.BillingCountry 85 | notEqual 86 | US,USA,United States,United States of America 87 | 88 | 89 | Account.SLA__c 90 | equals 91 | Gold,Platinum 92 | 93 | 94 | Account.Type 95 | contains 96 | Customer 97 | 98 | 99 | 100 | sf_psl_hackathon@august2021.com 101 | User 102 | 103 | Account.BillingCountry 104 | notEqual 105 | US,USA,United States,United States of America 106 | 107 | 108 | Account.SLA__c 109 | equals 110 | Silver,Bronze 111 | 112 | 113 | Account.Type 114 | contains 115 | Customer 116 | 117 | 118 | 119 | sf_psl_hackathon@august2021.com 120 | User 121 | 122 | Account.Type 123 | contains 124 | Partner 125 | 126 | 127 | 128 | 129 | -------------------------------------------------------------------------------- /force-app/main/default/lwc/metroPassForm/metroPassForm.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /force-app/main/default/classes/LightningSelfRegisterController.cls: -------------------------------------------------------------------------------- 1 | global class LightningSelfRegisterController { 2 | 3 | public LightningSelfRegisterController() { 4 | 5 | } 6 | 7 | @TestVisible 8 | private static boolean isValidPassword(String password, String confirmPassword) { 9 | return password == confirmPassword; 10 | } 11 | 12 | @TestVisible 13 | private static boolean siteAsContainerEnabled(String communityUrl) { 14 | Auth.AuthConfiguration authConfig = new Auth.AuthConfiguration(communityUrl,''); 15 | return authConfig.isCommunityUsingSiteAsContainer(); 16 | } 17 | 18 | @TestVisible 19 | private static void validatePassword(User u, String password, String confirmPassword) { 20 | if(!Test.isRunningTest()) { 21 | Site.validatePassword(u, password, confirmPassword); 22 | } 23 | return; 24 | } 25 | 26 | @AuraEnabled 27 | public static String selfRegister(String firstname ,String lastname, String email, String password, String confirmPassword, String accountId, String regConfirmUrl, String extraFields, String startUrl, Boolean includePassword) { 28 | Savepoint sp = null; 29 | try { 30 | sp = Database.setSavepoint(); 31 | 32 | if (lastname == null || String.isEmpty(lastname)) { 33 | return Label.Site.lastname_is_required; 34 | } 35 | 36 | if (email == null || String.isEmpty(email)) { 37 | return Label.Site.email_is_required; 38 | } 39 | 40 | User u = new User(); 41 | u.Username = email; 42 | u.put('Email',email); 43 | 44 | u.FirstName = firstname; 45 | u.LastName = lastname; 46 | 47 | String networkId = Network.getNetworkId(); 48 | 49 | // If using site to host the community the user should not hit s1 after logging in from mobile. 50 | if(networkId != null && siteAsContainerEnabled(Network.getLoginUrl(networkId))) { 51 | u.put('UserPreferencesHideS1BrowserUI',true); 52 | } 53 | 54 | String nickname = ((firstname != null && firstname.length() > 0) ? firstname.substring(0,1) : '' ) + lastname.substring(0,1); 55 | nickname += String.valueOf(Crypto.getRandomInteger()).substring(1,7); 56 | u.put('CommunityNickname', nickname); 57 | 58 | if (extraFields != null) { 59 | List extraFieldsList = (List) JSON.deserializeUntyped(extraFields); 60 | for (Object thisFieldObject : extraFieldsList) { 61 | Map thisField = (Map) thisFieldObject; 62 | Schema.SObjectField sof = Schema.SObjectType.User.fields.getMap().get((String) thisField.get('fieldPath')); 63 | u.put(sof, thisField.get('value')); 64 | } 65 | } 66 | 67 | if (includePassword) { 68 | if (!isValidPassword(password, confirmPassword)) { 69 | return Label.site.passwords_dont_match; 70 | } 71 | validatePassword(u, password, confirmPassword); 72 | } 73 | else { 74 | password = null; 75 | } 76 | 77 | // lastName is a required field on user, but if it isn't specified, we'll default it to the username 78 | String userId = Site.createPortalUser(u, accountId, password); 79 | // create a fake userId for test. 80 | if (Test.isRunningTest()) { 81 | userId = 'fakeUserId'; 82 | } 83 | if (userId != null) { 84 | if (password != null && password.length() > 1) { 85 | ApexPages.PageReference lgn = Site.login(email, password, startUrl); 86 | if(!Test.isRunningTest()) { 87 | aura.redirect(lgn); 88 | } 89 | } 90 | else { 91 | ApexPages.PageReference confirmRef = new PageReference(regConfirmUrl); 92 | if(!Test.isRunningTest()) { 93 | aura.redirect(confirmRef); 94 | } 95 | 96 | } 97 | } 98 | return null; 99 | } 100 | catch (Exception ex) { 101 | Database.rollback(sp); 102 | return ex.getMessage(); 103 | } 104 | } 105 | 106 | @AuraEnabled 107 | public static List> getExtraFields(String extraFieldsFieldSet) { 108 | List> extraFields = new List>(); 109 | Schema.FieldSet fieldSet = Schema.SObjectType.User.fieldSets.getMap().get(extraFieldsFieldSet); 110 | if(!Test.isRunningTest()) { 111 | if (fieldSet != null) { 112 | for (Schema.FieldSetMember f : fieldSet.getFields()) { 113 | Map fieldDetail = new Map(); 114 | fieldDetail.put('dbRequired', f.getDBRequired()); 115 | fieldDetail.put('fieldPath', f.getFieldPath()); 116 | fieldDetail.put('label', f.getLabel()); 117 | fieldDetail.put('required', f.getRequired()); 118 | fieldDetail.put('type', f.getType()); 119 | fieldDetail.put('value', ''); // client will populate 120 | extraFields.add(fieldDetail); 121 | }}} 122 | return extraFields; 123 | } 124 | 125 | @AuraEnabled 126 | global static String setExperienceId(String expId) { 127 | // Return null if there is no error, else it will return the error message 128 | try { 129 | if (expId != null) { 130 | Site.setExperienceId(expId); 131 | } 132 | return null; 133 | } catch (Exception ex) { 134 | return ex.getMessage(); 135 | } 136 | } 137 | } -------------------------------------------------------------------------------- /force-app/main/default/classes/LightningSelfRegisterControllerTest.cls: -------------------------------------------------------------------------------- 1 | @IsTest(SeeAllData = true) 2 | public with sharing class LightningSelfRegisterControllerTest { 3 | 4 | /* Verifies that IsValidPassword method with various password combinations. */ 5 | @IsTest 6 | static void testIsValidPassword() { 7 | System.assert(LightningSelfRegisterController.isValidPassword('password?@12334', 'password?@12334') == true); 8 | System.assert(LightningSelfRegisterController.isValidPassword('password?@12334', 'dummyPassword') == false); 9 | System.assert(LightningSelfRegisterController.isValidPassword('password?@12334', null) == false); 10 | System.assert(LightningSelfRegisterController.isValidPassword(null, 'fakePwd') == false); 11 | } 12 | 13 | @IsTest 14 | static void testSiteAsContainerEnabled() { 15 | System.assertNotEquals(null, LightningSelfRegisterController.siteAsContainerEnabled('https://portaleu1-developer-edition.eu11.force.com')); 16 | } 17 | 18 | /* Verifies the selfRegistration method flow with various invalid inputs */ 19 | @IsTest 20 | static void testSelfRegistration() { 21 | Map < String, String > paramsMap = initializeParams(); 22 | System.assertNotEquals(null, paramsMap); 23 | System.assertEquals(Label.Site.lastname_is_required, LightningSelfRegisterController.selfRegister(paramsMap.get('firstName'), '', paramsMap.get('email'), paramsMap.get('password'), paramsMap.get('confirmPasswordCorrect'), null, paramsMap.get('regConfirmUrl'), null, paramsMap.get('startUrl'), true)); 24 | System.assertEquals(Label.Site.email_is_required, LightningSelfRegisterController.selfRegister(paramsMap.get('firstName'), paramsMap.get('lastName'), '', paramsMap.get('password'), paramsMap.get('confirmPasswordCorrect'), null, paramsMap.get('regConfirmUrl'), null, paramsMap.get('startUrl'), true)); 25 | System.assertEquals(Label.Site.email_is_required, LightningSelfRegisterController.selfRegister(null, paramsMap.get('lastName'), '', null, paramsMap.get('confirmPasswordCorrect'), null, paramsMap.get('regConfirmUrl'), null, paramsMap.get('startUrl'), true)); 26 | System.assertEquals(Label.site.passwords_dont_match, LightningSelfRegisterController.selfRegister(paramsMap.get('firstName'), paramsMap.get('lastName'), paramsMap.get('email'), paramsMap.get('password'), paramsMap.get('confirmPasswordWrong'), null, paramsMap.get('regConfirmUrl'), null, paramsMap.get('startUrl'), true)); 27 | System.assertNotEquals(null, LightningSelfRegisterController.selfRegister(paramsMap.get('firstName'), paramsMap.get('lastName'), '', paramsMap.get('password'), paramsMap.get('confirmPasswordWrong'), null, paramsMap.get('regConfirmUrl'), null, paramsMap.get('startUrl'), false)); 28 | } 29 | 30 | 31 | /* Verifies the selfRegistration flow for valid inputs */ 32 | @IsTest 33 | static void testSelfRegisterWithProperCredentials() { 34 | Map < String, String > paramsMap = initializeParams(); 35 | System.assertEquals(null, LightningSelfRegisterController.selfRegister(paramsMap.get('firstName'), paramsMap.get('lastName'), paramsMap.get('email'), paramsMap.get('password'), paramsMap.get('confirmPasswordCorrect'), null, paramsMap.get('regConfirmUrl'), null, paramsMap.get('startUrl'), true)); 36 | } 37 | 38 | /* Verifies SelfRegistration flow with an accounId that is created within the test */ 39 | @IsTest 40 | static void testSelfRegisterWithCreatedAccount() { 41 | Account acc = new Account(name = 'test acc'); 42 | insert acc; 43 | List < Account > accounts = [SELECT Id FROM Account LIMIT 1]; 44 | System.assert(!accounts.isEmpty(), 'There must be at least one account in this environment!'); 45 | String accountId = accounts[0].Id; 46 | Map < String, String > paramsMap = initializeParams(); 47 | System.assertEquals(null, LightningSelfRegisterController.selfRegister(paramsMap.get('firstName'), paramsMap.get('lastName'), paramsMap.get('email'), paramsMap.get('password'), paramsMap.get('confirmPasswordCorrect'), accountId, paramsMap.get('regConfirmUrl'), null, paramsMap.get('startUrl'), false)); 48 | } 49 | 50 | @IsTest 51 | static void testGetNullExtraFields() { 52 | System.assertEquals(new List < Map < String, Object >> (), LightningSelfRegisterController.getExtraFields(null)); 53 | } 54 | 55 | @IsTest 56 | static void testGetNonEmptyExtraFields() { 57 | System.assertEquals(new List < Map < String, Object >> (), LightningSelfRegisterController.getExtraFields('field1')); 58 | } 59 | 60 | /* Verifies validation of extraFields within the Self Registration flow */ 61 | @IsTest 62 | static void testGetExtraFieldsInSelfRegistration() { 63 | List < Map < String, Object >> fieldlist = new List < Map < String, Object >> (); 64 | Map < String, String > paramsMap = initializeParams(); 65 | Map < String, Object > fieldMap = new Map < String, Object > (); 66 | fieldMap.put('description', 'new field'); 67 | fieldMap.put('fieldPath', 'dummyPath'); 68 | fieldlist.add(fieldMap); 69 | String extraFields = JSON.serialize(fieldlist); 70 | System.assertNotEquals(null, LightningSelfRegisterController.selfRegister(paramsMap.get('firstName'), paramsMap.get('lastName'), paramsMap.get('email'), paramsMap.get('password'), paramsMap.get('confirmPasswordCorrect'), null, paramsMap.get('regConfirmUrl'), extraFields, paramsMap.get('startUrl'), true)); 71 | } 72 | 73 | @IsTest 74 | static void LightningSelfRegisterControllerInstantiation() { 75 | LightningSelfRegisterController controller = new LightningSelfRegisterController(); 76 | System.assertNotEquals(controller, null); 77 | } 78 | 79 | /* Helper method to initialize the parameters required for SelfRegistration. */ 80 | private static Map < String, String > initializeParams() { 81 | Map < String, String > paramsMap = new Map < String, String > (); 82 | String firstName = 'test'; 83 | String lastName = 'User'; 84 | String email = 'testUser@salesforce.com'; 85 | String password = 'testuser123'; 86 | String confirmPasswordCorrect = 'testuser123'; 87 | String confirmPasswordWrong = 'wrongpassword'; 88 | String accountId = 'testuser123'; 89 | String regConfirmUrl = 'http://registration-confirm.com'; 90 | String startUrl = 'http://my.company.salesforce.com'; 91 | paramsMap.put('firstName', firstName); 92 | paramsMap.put('lastName', lastName); 93 | paramsMap.put('email', email); 94 | paramsMap.put('password', password); 95 | paramsMap.put('confirmPasswordCorrect', confirmPasswordCorrect); 96 | paramsMap.put('confirmPasswordWrong', confirmPasswordWrong); 97 | paramsMap.put('accountId', accountId); 98 | paramsMap.put('regConfirmUrl', regConfirmUrl); 99 | paramsMap.put('startUrl', startUrl); 100 | return paramsMap; 101 | } 102 | } --------------------------------------------------------------------------------