Technical Report · – Soniya Soni
Use Case – eVidyaloka
A Non-Profit Organization wants to create a system to track books and AV equipment that Employees / Students / Volunteers can borrow from a library. Design and implement a system on the Salesforce platform to meet the requirements.
Description
The eVidyaLoka Library Management is simple, user-friendly, and can be easily integrated with your existing system. The library management system provides online and offline storage, automated backups, and easy upgrades to simplify and enhance the learning process.
- The library management system provides mobile access to search the library catalog, schedules, books and resources from anywhere, at any given time via Smartphones and tablets
- All records related to the book issued and return deadline can be managed by the authorized personnel. The system also allows to record the fine received from the reader in the same platform, which eases the work of reporting for the Library department.
- It eliminates paper-based processes and reduces operation costs and saves time of the library management. So, the library will become free of the number of registers and files.
- Maximize the performance of libraries with dynamic reports, charts and graphs to review and track the progress for better decision-making.
Objectives
The principle goal is to give a free environment with a proficient and intuitive interface to make the library administration framework less demanding and sorted out. Other goal are:
- Upgrading the present correspondence frameworks.
- Organization creates digital classrooms for children in remote Areas.
- Providing consistent learning experience
- Automating the whole procedure.
- Reducing Manual Error.
Implementation
Creation of the required Data Model for above application
- Using LWC for creating user-friendly application which will show and implement all Use case of LWC
Custom Objects Required are-
- Book : Contain info about All Books
{ Book_Id ,Author Name , Biography ,Book Name, Description, Quantity ,Price, Available }
- Borrower : Contain info about All book Borrowers
{ borrower _name, borrower _id, Email}
- Member : Contain info about All Members associated with Library
{Name, Address, Member_id, Member_Type, Date of Membership, Date of Expire}
- Bill : Contain info about All Bills associated with Library and Members
{Bill_id, Member_id, Bill_Amount}
- Book Review : Contain info about Book Comments and ratings of books
{Book Review, Comment, Rating}
- Book Types: Contain info about Books and AVEquipments associated with Library
{Equipment Types , Book Name}
Field required are-
All the details of the Member such as Name, Address, email, Member id.
- All the details of the book required.
All the details if a bill is generated .
- All the details of the borrower are tracked.
Entity Diagram
Book and BookReview:
This object has a master-detail relationship with Book. So one book can have many comments/ratings.
List of the fields under the objects
- Member
Here the Address is Text Area data type, Member id is a Auto Number so that we can generate the number automatically. Member type is been pick list as we have to provide the dropdown for student, faculty and Admin
Formula Fields for Member Object
- Bill Amount : we have put a formula to calculate the bill.
Formula Used: IF(TODAY()> Date_of_Return c,(TODAY()- Date_of_Return c )* 2, 0)
Date of issue and Date of Return are date and formula (date) data type respectively.
- Date of Membership Expire : we have put a formula to calculate the Date of Return.
Formula Used: Date_of_MeExpire c+ 360 ( membership expire after 1 year)
- Age Of Member : Calculated by a formula filed from Date of Birth of member
Formula Used: YEAR(TODAY() ) – YEAR( Memeber_Date_Of_Birth c )
- Member Active Status: IF( (Date_of_MeExpire c – Today()) < 0, IMAGE(“/img/samples/color_red.gif”, “red”, 30, 30),
IF( (Date_of_MeExpire c – Today()) < 10, IMAGE(“/img/samples/color_yellow.gif”, “yellow”, 30, 30),
IMAGE(“/img/samples/color_green.gif”, “green”, 30, 30)
))
Validation Rules Used for Member Object
- Date Of Membership should not be Saturday or Sunday
Email field should contain valid Email Address
5) Member Age should be between 16- 65 years
In this project we have used data type Lookup to build the relationship between the two objects Bill and member, and similarly with the Books and Member.
- Book
List of the fields under the object Book
Here the field Author and Title have Text area (255) Data Type. Book Id is Auto Number data type as we need to generate the automatic number for the books. Similarly we used data type as Currency (18,0) and Number(3,0) for Price and Quantity respectively.
Formula Fields
- Availability : We have used a formula to check the availability for the books in the system.
Formula used: IF (Quantity c > 0,”Available”,”Not Available”)
- Book Image : We have used a formula to get Image
Formula used: IMAGE( Picture c , Name )
Page layout for the objects and fields for the object Book
Validation Rules on Book Object
- Book Name field should be only contain Alphabets
- Quantity of Books should be greater then Issued Books
Trigger on Book Object
This Trigger will fire for Before and After Event on Book Object for following conditions.
- When Quantity = 0 : Since Book Quantity is zero cannot issue book at this time.
- When Total Issue is > then Quantity : Book Issue cannot be greater then Quantity of Books
- When Total Return > then Issued : Book Return cannot be greater then total Books Issued
T
- Bill
List of the fields under the object Bill
- Borrower: Shows Relation between Book and Member Object
Formula Fields for Borrower Object
- Bill Amount : we have put an formula to calculate the bill.
Formula Used: IF(TODAY()> Date_of_Return_B c ,(TODAY()- Date_of_Return_B c )*2, 0)
Date of issue and Date of Return are date and formula (date) data type respectively.
- Cross Object Formula field :
Formula Used: IF (Books r.Available_Quantity c > 0,”Borrow Now”,”Not Available”)
This will not allow User to Borrow Books when Quantity of Book is Zero
Borrower Validation Rules
- Date of Issue cannot be Saturday or sunday
- Data of Return should be weekdays
- Trigger Validation Rule on Borrower Object
if(Trigger.isBefore && boIssue.BookStatus c == ‘Not Available’) { boIssue.addError(‘Since Book Quantity is zero cannot issue book at this time’
- BookReview Object Fileds
BookReview c : Master Detail Relationship Between Book and BookReview Coz BookReview cannot be created until book is there.
Custom Tabs: We have provide different color tabs for our objects as shown in the below snapshot.
Declarative Tools Used
Process builder
Sample Email used in the project: We have used the following two sample Email templates;
- Books overdue for Re-Order : This email will be generated and delivered to the members if their books quantity is zero and need to Re-Order.
Email Alert received by above action:
- Reminder Email for Re-issue for the book: This email will be generated and send to the borrowers if they have the books pending and the books are needed to be Re-issued otherwise Charges will be applied as penalty.
- Reminder Email for Renew of Membership : This email will be generated and send to the members regarding Renew of membership otherwise Charges will be applied.
Email Alert received by above action:
Features:
- Use of LWC in Application
- Report: To create the report we have to follow the process click on New Report-> select report type -> Then chose the desire report type. I have created a few Report types for this project which are as mentioned below.
- Book with Members: It draws the graph between the books with the members and displays that the number of books that each member have.
- Books with Bills : Here in the report the maximum numbers of books issued to Members
- Books verses Member and Bill: This plot shows the comparison between Books issued by the Members and the bill generated by each member on the books.
- Dashboard: At last goes the dashboard the place the explanatory Also business choices would be produced. It provides for you an acceptable slice dream for what may be going on around the firm. You might screen each Furthermore each single part for your firm. This Dashboard comprises all the three reports that are explained earlier and it will give a live track of the data that has been flowing through the system. All the three reports have been collided and presented in this form of the dashboard.
- Mobile App-LMS – Access to library catalog, schedules, books, Dashboard, Reports and resources from anywhere, at any given time via Smartphones and tablets gives user freedom to quick Learning from Anywhere and Anytime.
Mobile App-LMS
Use of Lightning message service
The Lightning message service now lets you limit scope to the active tab only (default) or include the entire application.
To specify active scope, you don’t need to include the scope parameter, since it’s the default behavior. To specify scope for the entire application, continue to use the scope parameter with a value of APPLICATION.
Key Things learned and implemented
- Building reusable LWC components inside Lightning App Builder
- Lightning Message Service (LMS)
- Lightning Data Service (LDS)
- Communication between components (Parent to Child and Child to Parent)
- Apex Classes and Triggers
- Lightning Datatable, Layout, Tabset, Spinner, custom Labels
- Utilizing External Javascript
- Navigation between pages
- Mild Lightning Design System (SLDS)
- Automation Flows , process builder