SlideShare a Scribd company logo
1 of 63
Muslim
Pro
Designed by
Abir Muhammad Turza
&
Abdul Basit Ahmad Mir
The Holy Quran (Al Qur'an) with
audio recitations (mp3).
Translation and Tafseer of all
chapters in different languages.
Recitation by different Qaris.
Verse by Verse Transtion and Tafseer in
Different Languages.
Accurate prayer
times based on your
current location
with multiple
settings available
(angles).
Azan: visual and
audio notifications
for the calls for
prayer with many
muezzin voices to
choose from
Full and
Authentic Books
of Hadith to
increase your
knowledge about
Islam and to live
a better life
following the
path of prophet
Mohammed
(SAW).
Dhikr & Dua
authentic dhikr and
duas found in the
holy Quran and
Sunnah.
Beautiful high
quality dua audio
recitations for
all duas.
99 names of Allah
with meaning and
benefits of
reciting are
provided in
English and
Arabic, for every
name of Allah in
Quran (Islamic
Holy Book) with
audio(mp3).
Location of nearby Masjid.
Halal Restaurants.
Surahs with transliteration and meaning in
different language
Every Ayahs with Arabic Text and
transliteration
Each Ayah with translation in different
language
Footnotes on translation of hard to
understand Ayats
Verse by verse tafsir of all Ayahs in different
languages
Word by word
meaning in
different
language of
every word of
Quran
Play Audio Verse by Verse
Play Audio of the whole sura
Asmaul Husna with Bangla and English meaning
together with explanation and audio.
Masjid information with prayer times.
Huge Collection of over 40000 authentic
hadiths.
Topic wise Hadith Selection
Distance and Direction of nearest mosque.
Authentic Prayer times
Restaurant
Information with
opening and close
time
Qibla Direction
Video Lectures For Premium Users
Calculate Zakat
Procedure Tasbih Count
Entities
Queries
Simple Queries
1.
 SELECT
 "translation".sura_id,
 "translation".verse_id,
 "translation".translation_text
 FROM
 "translation"
 WHERE
 "translation".t_language = 'Bangla'
 ORDER BY
 "translation".sura_id ASC,
 "translation".verse_id ASC
 ;
2.
 SELECT
 "translation".sura_id,
 "translation".verse_id,
 "translation".footnotes,
 "translation".t_language
 FROM
 "translation"
 WHERE
 "translation".t_language ='English' AND
 "translation".footnotes IS NOT NULL
 ORDER BY
 "translation".sura_id ASC,
 "translation".verse_id ASC
 ;
3.
 SELECT
 verse_id,tafsir.tafsir_text,tafsir.tafsir_urdu,tafsir_bangla
 FROM
 tafsir
 WHERE
 tafsir.sura_id = 1
 order by verse_id
 ;
4.
 SELECT
 meaning_word_by_word.sura_id,
 meaning_word_by_word.verse_id,
 meaning_word_by_word.word_id,
 meaning_word_by_word.arabic1 || meaning_word_by_word.arabic2 arabic,
 meaning_word_by_word.bangla,
 meaning_word_by_word.english
 FROM
 meaning_word_by_word
 ORDER BY
 meaning_word_by_word.sura_id ASC,
 meaning_word_by_word.verse_id ASC,
 meaning_word_by_word.word_id ASC;
5.
 SELECT
 "public".hadiths."id",
 "public".hadiths.narrator,
 "public".hadiths."text",
 "public".hadiths.text_arabic,
 "public".hadiths.reference
 FROM
 "public".hadiths
 ORDER BY
 "public".hadiths."id" ASC
 LIMIT 1111
6.
 SELECT sura_id,name,transliteration,audio_path FROM surahs WHERE sura_id
= 4 ;
7.
 SELECT * from prayer_times WHERE "Date" = CURRENT_DATE;
8.
 SELECT
 asma_ul_husnah."id",
 asma_ul_husnah."name",
 asma_ul_husnah.transliteration,
 asma_ul_husnah.meaning,
 asma_ul_husnah.explanation,
 asma_ul_husnah.transliteration_bangla,
 asma_ul_husnah.meaning_bangla,
 asma_ul_husnah.fozilat_bangla,
 asma_ul_husnah.audio_path
 FROM
 asma_ul_husnah
 ORDER BY
 asma_ul_husnah."id" ASC
 ;
9.
 SELECT * from subject_wise_directory;
10.
 SELECT
 "public".dua."id",
 "public".dua."Arabic",
 "public".dua."Transliteration",
 "public".dua."Translation",
 "public".dua."Importance",
 "public".dua."Reference"
 FROM
 "public".dua
Complex Queries
1.
 SELECT
 "public".hadiths.hadith_id,
 "public".hadiths.narrator,
 "public".hadiths."text",
 "public".hadiths.text_arabic,
 "public".hadiths.reference
 FROM
 "public".hadiths
 WHERE
 "public".hadiths.topic_id = (SELECT topic_id FROM hadith_topic WHERE
topic_name = 'Belief') AND
 "public".hadiths.collection_id = (SELECT collection_id FROM hadith_topic
WHERE topic_name = 'Belief')
2.
 SELECT ayat.sura_id,surahs.transliteration,verse_id,ayat.audio_path
 FROM ayat
 INNER JOIN
 surahs
 On
 ayat.sura_id=surahs.sura_id
 WHERE ayat.sura_id= 2
 ORDER BY verse_id;
3.
 SELECT
 mosque."name",
 "location".longitude,
 "location".latitude,
 "location"."address",
 mosque.fajar_jamat_time,
 mosque.duhar_jamat_time,
 mosque.asr_jamat_time,
 mosque.magrib_jamat_time,
 mosque.isha_jamat_time
 FROM
 mosque
 INNER JOIN "location" ON mosque.location_id = "location"."id"
 ;
4.
 SELECT
 "public".restaurents."name",
 "public".restaurents.opening_time,
 "public".restaurents.close_time,
 "public"."location".address
 FROM
 "public".restaurents inner join "public"."location" on
restaurents.location_id="location"."id" ;
5.
 SELECT
 video
 FROM
 video_lecture
 WHERE exists( select * from users where users.id =1 and users.type =
'premium');
Functions
1.
 CREATE OR REPLACE FUNCTION "get_distance"("_lon1" float8, "_lat1" float8,
"_lon2" float8, "_lat2" float8)
 RETURNS "pg_catalog"."float8" AS $BODY$
 DECLARE
 distance FLOAT;
 BEGIN
 select (point(_lat1,_lon1) <@> point(_lat2,_lon2)) into distance;
 RETURN distance;
 END
 $BODY$
 LANGUAGE plpgsql VOLATILE
 COST 100
2.
 CREATE OR REPLACE FUNCTION "get_direction"("y2" float8, "x2" float8, "y1" float8, "x1" float8)
 RETURNS "pg_catalog"."varchar" AS $BODY$
 DECLARE
 radian_angle FLOAT;
 coordIndex FLOAT;
 compassReading FLOAT;
 coordNames VARCHAR[];
 BEGIN
 -- Routine body goes here...
 coordNames:= array["N", "NE", "E", "SE", "S", "SW", "W", "NW", "N"];
 radian_angle := atan2((y1 - y2), (x1 - x2));
 compassReading := radians * (180 / pi());
 coordIndex := round(compassReading / 45);
 if coordIndex < 0 THEN
 coordIndex := coordIndex + 8;
 END IF;
 RETURN coordNames[coordIndex];
 END$BODY$
 LANGUAGE plpgsql VOLATILE
 COST 100
3.
 CREATE OR REPLACE FUNCTION "get_degree"("y2" float8, "x2" float8, "y1" float8, "x1" float8)
 RETURNS "pg_catalog"."float8" AS $BODY$
 DECLARE
 radian_angle FLOAT;
 coordIndex FLOAT;
 compassReading FLOAT;
 BEGIN
 radian_angle := atan2((y1 - y2), (x1 - x2));
 compassReading := radians * (180 / pi());
 coordIndex := round(compassReading / 45);
 if compassReading > 180 THEN
 compassReading := compassReading - 180;
 END IF;
 RETURN compassReading;
 END$BODY$
 LANGUAGE plpgsql VOLATILE
 COST 100
4.
 CREATE OR REPLACE FUNCTION "public"."quibla_direction"("fd" float8, "ld" float8)
 RETURNS "pg_catalog"."float8" AS $BODY$
 DECLARE
 fm FLOAT;
 lm FLOAT;
 ans float;
 compassReading FLOAT;
 BEGIN
 fm:=21.422543;
 lm:=39.826186;
 ans:= get_degree(ld, fd, lm, fm);
 return ans;
 END$BODY$
 LANGUAGE plpgsql VOLATILE
 COST 100
5.
 CREATE OR REPLACE FUNCTION "nearest_mosque"("idn" int4)
 RETURNS "pg_catalog"."int4" AS $BODY$
 DECLARE
 lon_1 FLOAT;
 lat_1 float;
 lon_2 float;
 lat_2 FLOAT;
 distance FLOAT;
 shortest FLOAT;
 num INTEGER;
 temp1 INTEGER;
 r record;
 BEGIN
 shortest:=5000000;
 SELECT longitude,latitude into lon_1, lat_1
 FROM users INNER JOIN "location"ON users.location_id="location".id
 WHERE users.id = idn;

 FOR r IN SELECT location_id,longitude,latitude
 FROM mosque INNER JOIN "location"ON mosque.location_id="location".id
 LOOP
 lon_2:=r.longitude;
 lat_2:=r.latitude;
 temp1:=r.location_id;
 distance := get_distance(lon_1, lat_1, lon_2, lat_2);
 IF distance<shortest THEN
 num:=temp1;
 shortest:=distance;
 END IF;
 END LOOP;
 RETURN num;
 END;
6.
 CREATE OR REPLACE FUNCTION "nearest_mosque_distance"("idn" int4)
 RETURNS "pg_catalog"."float8" AS $BODY$
 DECLARE
 lon_1 FLOAT;
 lat_1 float;
 lon_2 float;
 lat_2 FLOAT;
 distance FLOAT;
 shortest FLOAT;
 num INTEGER;
 temp1 INTEGER;
 r record;
 BEGIN
 shortest:=5000000;
 SELECT longitude,latitude into lon_1, lat_1
 FROM users INNER JOIN "location"ON users.location_id="location".id
 WHERE users.id = idn;

 FOR r IN SELECT location_id,longitude,latitude
 FROM mosque INNER JOIN "location"ON mosque.location_id="location".id
 LOOP
 lon_2:=r.longitude;
 lat_2:=r.latitude;
 temp1:=r.location_id;
 distance := get_distance(lon_1, lat_1, lon_2, lat_2);
 IF distance<shortest THEN
 num:=temp1;
 shortest:=distance;
 END IF;
 END LOOP;
 RETURN distance;
 END;
7.
 CREATE OR REPLACE FUNCTION "public"."nearest_restaurent"("idn" int4)
 RETURNS "pg_catalog"."int4" AS $BODY$
 DECLARE
 lon_1 FLOAT;
 lat_1 float;
 lon_2 float;
 lat_2 FLOAT;
 distance FLOAT;
 shortest FLOAT;
 num INTEGER;
 temp1 INTEGER;
 r record;
 BEGIN
 shortest:=5000000;
 SELECT longitude,latitude into lon_1, lat_1
 FROM users INNER JOIN "location"ON users.location_id="location".id
 WHERE users.id = idn;

 FOR r IN SELECT location_id,longitude,latitude
 FROM restaurents INNER JOIN "location"ON restaurents.location_id="location".id
 LOOP
 lon_2:=r.longitude;
 lat_2:=r.latitude;
 temp1:=r.location_id;
 distance := get_distance(lon_1, lat_1, lon_2, lat_2);
 IF distance<shortest THEN
 num:=temp1;
 shortest:=distance;
 END IF;
 END LOOP;
 RETURN num;
 END;
8.
 CREATE OR REPLACE FUNCTION "public"."nearest_restaurent_distance"("idn" int4)
 RETURNS "pg_catalog"."int4" AS $BODY$
 DECLARE
 lon_1 FLOAT;
 lat_1 float;
 lon_2 float;
 lat_2 FLOAT;
 distance FLOAT;
 shortest FLOAT;
 num INTEGER;
 temp1 INTEGER;
 r record;
 BEGIN
 shortest:=5000000;
 SELECT longitude,latitude into lon_1, lat_1
 FROM users INNER JOIN "location"ON users.location_id="location".id
 WHERE users.id = idn;

 FOR r IN SELECT location_id,longitude,latitude
 FROM restaurents INNER JOIN "location"ON restaurents.location_id="location".id
 LOOP
 lon_2:=r.longitude;
 lat_2:=r.latitude;
 temp1:=r.location_id;
 distance := get_distance(lon_1, lat_1, lon_2, lat_2);
 IF distance<shortest THEN
 num:=temp1;
 shortest:=distance;
 END IF;
 END LOOP;
 RETURN shortest;
 END;
9.
 CREATE OR REPLACE FUNCTION "public"."calculate_jakat"("user_id" int4, "earn"
float8, "expandature" float8)
 RETURNS "pg_catalog"."float8" AS $BODY$
 DECLARE
 j FLOAT;
 i float;
 BEGIN
 i:=earn-expandature;
 j:=0;
 if i>50000 then
 j= i/40;
 end if;
 RETURN j;
Procedure
1.
 CREATE OR REPLACE PROCEDURE "public"."bookmark_this"("user_id" int4, "sura_id" int4,
"verse_id" int4)
 AS $BODY$
 INSERT INTO bookmark VALUES (user_id,sura_id,verse_id);
2.
 CREATE OR REPLACE PROCEDURE "public"."increase"("u_id" int4)
 AS $BODY$
 BEGIN
 if EXISTS(SELECT * from tasbih WHERE user_id=u_id and date=CURRENT_DATE) then
 UPDATE tasbih set count=count+1 WHERE user_id=u_id and date=CURRENT_DATE;
 else
 INSERT INTO tasbih VALUES (u_id,CURRENT_DATE,1);
 end if;
 END;
12.
 CREATE OR REPLACE PROCEDURE "public"."increase"("u_id" int4)
 AS $BODY$
 BEGIN
 if EXISTS(SELECT * from tasbih WHERE user_id=u_id and
date=CURRENT_DATE) then
 UPDATE tasbih set count=count+1 WHERE user_id=u_id and
date=CURRENT_DATE;
 else
 INSERT INTO tasbih VALUES (u_id,CURRENT_DATE,1);
 end if;
 END;
Trigger
1.
 CREATE TRIGGER upgrade_trigger
 after INSERT or UPDATE ON donation
 FOR EACH ROW
 EXECUTE PROCEDURE upgrade();
 CREATE OR REPLACE FUNCTION "public"."upgrade"()
 RETURNS "pg_catalog"."trigger" AS $BODY$
 DECLARE
 dd INT;
 BEGIN
 SELECT sum(amount) into dd from donation where user_id = new.id;
 IF dd>= 499 THEN
 UPDATE users SET type = 'premium' WHERE id=new.id;
 END if;
 RETURN NEW;
 END;
2.
 CREATE TRIGGER history_trigger
 after INSERT or UPDATE ON users
 FOR EACH ROW
 EXECUTE PROCEDURE user_history();
 CREATE OR REPLACE FUNCTION "public"."user_history"()
 RETURNS "pg_catalog"."trigger" AS $BODY$
 BEGIN
 IF not exists ( SELECT * from "location_history" where user_id = new.id and
date=CURRENT_DATE and location_id = new.location_id) THEN
 INSERT into location_history VALUES (new.id , CURRENT_DATE ,
new.location_id );

 END if;
 RETURN NEW;
 END;
3.
 CREATE trigger add_user_trigger
 BEFORE insert or UPDATE of email ON users
 FOR EACH ROW
 EXECUTE PROCEDURE check_mail();
 CREATE OR REPLACE FUNCTION "public"."check_mail"()
 RETURNS "pg_catalog"."trigger" AS $BODY$
 begin

 if exists( SELECT * from users WHERE email= new.email ) then
 RAISE EXCEPTION 'Invalid Email --> %', new.sura_id
 USING HINT = 'Please check your email';
 end if;
 RETURN new;
 end;
ER Diagram : -
E R Diagram with Attributes

More Related Content

Recently uploaded

%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
masabamasaba
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
VictoriaMetrics
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
masabamasaba
 

Recently uploaded (20)

%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 

Featured

Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellGood Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Saba Software
 

Featured (20)

Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy Presentation
 
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellGood Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
 

Muslim Pro

  • 1. Muslim Pro Designed by Abir Muhammad Turza & Abdul Basit Ahmad Mir
  • 2. The Holy Quran (Al Qur'an) with audio recitations (mp3). Translation and Tafseer of all chapters in different languages. Recitation by different Qaris.
  • 3. Verse by Verse Transtion and Tafseer in Different Languages.
  • 4. Accurate prayer times based on your current location with multiple settings available (angles). Azan: visual and audio notifications for the calls for prayer with many muezzin voices to choose from
  • 5. Full and Authentic Books of Hadith to increase your knowledge about Islam and to live a better life following the path of prophet Mohammed (SAW).
  • 6. Dhikr & Dua authentic dhikr and duas found in the holy Quran and Sunnah. Beautiful high quality dua audio recitations for all duas.
  • 7. 99 names of Allah with meaning and benefits of reciting are provided in English and Arabic, for every name of Allah in Quran (Islamic Holy Book) with audio(mp3).
  • 10. Surahs with transliteration and meaning in different language
  • 11. Every Ayahs with Arabic Text and transliteration
  • 12. Each Ayah with translation in different language
  • 13. Footnotes on translation of hard to understand Ayats
  • 14. Verse by verse tafsir of all Ayahs in different languages
  • 15. Word by word meaning in different language of every word of Quran
  • 16. Play Audio Verse by Verse
  • 17. Play Audio of the whole sura
  • 18. Asmaul Husna with Bangla and English meaning together with explanation and audio.
  • 19. Masjid information with prayer times.
  • 20. Huge Collection of over 40000 authentic hadiths.
  • 21. Topic wise Hadith Selection
  • 22. Distance and Direction of nearest mosque.
  • 26. Video Lectures For Premium Users
  • 30.
  • 31. Queries Simple Queries 1.  SELECT  "translation".sura_id,  "translation".verse_id,  "translation".translation_text  FROM  "translation"  WHERE  "translation".t_language = 'Bangla'  ORDER BY  "translation".sura_id ASC,  "translation".verse_id ASC  ;
  • 32. 2.  SELECT  "translation".sura_id,  "translation".verse_id,  "translation".footnotes,  "translation".t_language  FROM  "translation"  WHERE  "translation".t_language ='English' AND  "translation".footnotes IS NOT NULL  ORDER BY  "translation".sura_id ASC,  "translation".verse_id ASC  ;
  • 33. 3.  SELECT  verse_id,tafsir.tafsir_text,tafsir.tafsir_urdu,tafsir_bangla  FROM  tafsir  WHERE  tafsir.sura_id = 1  order by verse_id  ;
  • 34. 4.  SELECT  meaning_word_by_word.sura_id,  meaning_word_by_word.verse_id,  meaning_word_by_word.word_id,  meaning_word_by_word.arabic1 || meaning_word_by_word.arabic2 arabic,  meaning_word_by_word.bangla,  meaning_word_by_word.english  FROM  meaning_word_by_word  ORDER BY  meaning_word_by_word.sura_id ASC,  meaning_word_by_word.verse_id ASC,  meaning_word_by_word.word_id ASC;
  • 35. 5.  SELECT  "public".hadiths."id",  "public".hadiths.narrator,  "public".hadiths."text",  "public".hadiths.text_arabic,  "public".hadiths.reference  FROM  "public".hadiths  ORDER BY  "public".hadiths."id" ASC  LIMIT 1111
  • 36. 6.  SELECT sura_id,name,transliteration,audio_path FROM surahs WHERE sura_id = 4 ; 7.  SELECT * from prayer_times WHERE "Date" = CURRENT_DATE;
  • 37. 8.  SELECT  asma_ul_husnah."id",  asma_ul_husnah."name",  asma_ul_husnah.transliteration,  asma_ul_husnah.meaning,  asma_ul_husnah.explanation,  asma_ul_husnah.transliteration_bangla,  asma_ul_husnah.meaning_bangla,  asma_ul_husnah.fozilat_bangla,  asma_ul_husnah.audio_path  FROM  asma_ul_husnah  ORDER BY  asma_ul_husnah."id" ASC  ;
  • 38. 9.  SELECT * from subject_wise_directory; 10.  SELECT  "public".dua."id",  "public".dua."Arabic",  "public".dua."Transliteration",  "public".dua."Translation",  "public".dua."Importance",  "public".dua."Reference"  FROM  "public".dua
  • 39. Complex Queries 1.  SELECT  "public".hadiths.hadith_id,  "public".hadiths.narrator,  "public".hadiths."text",  "public".hadiths.text_arabic,  "public".hadiths.reference  FROM  "public".hadiths  WHERE  "public".hadiths.topic_id = (SELECT topic_id FROM hadith_topic WHERE topic_name = 'Belief') AND  "public".hadiths.collection_id = (SELECT collection_id FROM hadith_topic WHERE topic_name = 'Belief')
  • 40. 2.  SELECT ayat.sura_id,surahs.transliteration,verse_id,ayat.audio_path  FROM ayat  INNER JOIN  surahs  On  ayat.sura_id=surahs.sura_id  WHERE ayat.sura_id= 2  ORDER BY verse_id;
  • 41. 3.  SELECT  mosque."name",  "location".longitude,  "location".latitude,  "location"."address",  mosque.fajar_jamat_time,  mosque.duhar_jamat_time,  mosque.asr_jamat_time,  mosque.magrib_jamat_time,  mosque.isha_jamat_time  FROM  mosque  INNER JOIN "location" ON mosque.location_id = "location"."id"  ;
  • 42. 4.  SELECT  "public".restaurents."name",  "public".restaurents.opening_time,  "public".restaurents.close_time,  "public"."location".address  FROM  "public".restaurents inner join "public"."location" on restaurents.location_id="location"."id" ;
  • 43. 5.  SELECT  video  FROM  video_lecture  WHERE exists( select * from users where users.id =1 and users.type = 'premium');
  • 44. Functions 1.  CREATE OR REPLACE FUNCTION "get_distance"("_lon1" float8, "_lat1" float8, "_lon2" float8, "_lat2" float8)  RETURNS "pg_catalog"."float8" AS $BODY$  DECLARE  distance FLOAT;  BEGIN  select (point(_lat1,_lon1) <@> point(_lat2,_lon2)) into distance;  RETURN distance;  END  $BODY$  LANGUAGE plpgsql VOLATILE  COST 100
  • 45. 2.  CREATE OR REPLACE FUNCTION "get_direction"("y2" float8, "x2" float8, "y1" float8, "x1" float8)  RETURNS "pg_catalog"."varchar" AS $BODY$  DECLARE  radian_angle FLOAT;  coordIndex FLOAT;  compassReading FLOAT;  coordNames VARCHAR[];  BEGIN  -- Routine body goes here...  coordNames:= array["N", "NE", "E", "SE", "S", "SW", "W", "NW", "N"];  radian_angle := atan2((y1 - y2), (x1 - x2));  compassReading := radians * (180 / pi());  coordIndex := round(compassReading / 45);  if coordIndex < 0 THEN  coordIndex := coordIndex + 8;  END IF;  RETURN coordNames[coordIndex];  END$BODY$  LANGUAGE plpgsql VOLATILE  COST 100
  • 46. 3.  CREATE OR REPLACE FUNCTION "get_degree"("y2" float8, "x2" float8, "y1" float8, "x1" float8)  RETURNS "pg_catalog"."float8" AS $BODY$  DECLARE  radian_angle FLOAT;  coordIndex FLOAT;  compassReading FLOAT;  BEGIN  radian_angle := atan2((y1 - y2), (x1 - x2));  compassReading := radians * (180 / pi());  coordIndex := round(compassReading / 45);  if compassReading > 180 THEN  compassReading := compassReading - 180;  END IF;  RETURN compassReading;  END$BODY$  LANGUAGE plpgsql VOLATILE  COST 100
  • 47. 4.  CREATE OR REPLACE FUNCTION "public"."quibla_direction"("fd" float8, "ld" float8)  RETURNS "pg_catalog"."float8" AS $BODY$  DECLARE  fm FLOAT;  lm FLOAT;  ans float;  compassReading FLOAT;  BEGIN  fm:=21.422543;  lm:=39.826186;  ans:= get_degree(ld, fd, lm, fm);  return ans;  END$BODY$  LANGUAGE plpgsql VOLATILE  COST 100
  • 48. 5.  CREATE OR REPLACE FUNCTION "nearest_mosque"("idn" int4)  RETURNS "pg_catalog"."int4" AS $BODY$  DECLARE  lon_1 FLOAT;  lat_1 float;  lon_2 float;  lat_2 FLOAT;  distance FLOAT;  shortest FLOAT;  num INTEGER;  temp1 INTEGER;  r record;  BEGIN
  • 49.  shortest:=5000000;  SELECT longitude,latitude into lon_1, lat_1  FROM users INNER JOIN "location"ON users.location_id="location".id  WHERE users.id = idn;   FOR r IN SELECT location_id,longitude,latitude  FROM mosque INNER JOIN "location"ON mosque.location_id="location".id  LOOP  lon_2:=r.longitude;  lat_2:=r.latitude;  temp1:=r.location_id;  distance := get_distance(lon_1, lat_1, lon_2, lat_2);  IF distance<shortest THEN  num:=temp1;  shortest:=distance;  END IF;  END LOOP;  RETURN num;  END;
  • 50. 6.  CREATE OR REPLACE FUNCTION "nearest_mosque_distance"("idn" int4)  RETURNS "pg_catalog"."float8" AS $BODY$  DECLARE  lon_1 FLOAT;  lat_1 float;  lon_2 float;  lat_2 FLOAT;  distance FLOAT;  shortest FLOAT;  num INTEGER;  temp1 INTEGER;  r record;
  • 51.  BEGIN  shortest:=5000000;  SELECT longitude,latitude into lon_1, lat_1  FROM users INNER JOIN "location"ON users.location_id="location".id  WHERE users.id = idn;   FOR r IN SELECT location_id,longitude,latitude  FROM mosque INNER JOIN "location"ON mosque.location_id="location".id  LOOP  lon_2:=r.longitude;  lat_2:=r.latitude;  temp1:=r.location_id;  distance := get_distance(lon_1, lat_1, lon_2, lat_2);  IF distance<shortest THEN  num:=temp1;  shortest:=distance;  END IF;  END LOOP;  RETURN distance;  END;
  • 52. 7.  CREATE OR REPLACE FUNCTION "public"."nearest_restaurent"("idn" int4)  RETURNS "pg_catalog"."int4" AS $BODY$  DECLARE  lon_1 FLOAT;  lat_1 float;  lon_2 float;  lat_2 FLOAT;  distance FLOAT;  shortest FLOAT;  num INTEGER;  temp1 INTEGER;  r record;
  • 53.  BEGIN  shortest:=5000000;  SELECT longitude,latitude into lon_1, lat_1  FROM users INNER JOIN "location"ON users.location_id="location".id  WHERE users.id = idn;   FOR r IN SELECT location_id,longitude,latitude  FROM restaurents INNER JOIN "location"ON restaurents.location_id="location".id  LOOP  lon_2:=r.longitude;  lat_2:=r.latitude;  temp1:=r.location_id;  distance := get_distance(lon_1, lat_1, lon_2, lat_2);  IF distance<shortest THEN  num:=temp1;  shortest:=distance;  END IF;  END LOOP;  RETURN num;  END;
  • 54. 8.  CREATE OR REPLACE FUNCTION "public"."nearest_restaurent_distance"("idn" int4)  RETURNS "pg_catalog"."int4" AS $BODY$  DECLARE  lon_1 FLOAT;  lat_1 float;  lon_2 float;  lat_2 FLOAT;  distance FLOAT;  shortest FLOAT;  num INTEGER;  temp1 INTEGER;  r record;
  • 55.  BEGIN  shortest:=5000000;  SELECT longitude,latitude into lon_1, lat_1  FROM users INNER JOIN "location"ON users.location_id="location".id  WHERE users.id = idn;   FOR r IN SELECT location_id,longitude,latitude  FROM restaurents INNER JOIN "location"ON restaurents.location_id="location".id  LOOP  lon_2:=r.longitude;  lat_2:=r.latitude;  temp1:=r.location_id;  distance := get_distance(lon_1, lat_1, lon_2, lat_2);  IF distance<shortest THEN  num:=temp1;  shortest:=distance;  END IF;  END LOOP;  RETURN shortest;  END;
  • 56. 9.  CREATE OR REPLACE FUNCTION "public"."calculate_jakat"("user_id" int4, "earn" float8, "expandature" float8)  RETURNS "pg_catalog"."float8" AS $BODY$  DECLARE  j FLOAT;  i float;  BEGIN  i:=earn-expandature;  j:=0;  if i>50000 then  j= i/40;  end if;  RETURN j;
  • 57. Procedure 1.  CREATE OR REPLACE PROCEDURE "public"."bookmark_this"("user_id" int4, "sura_id" int4, "verse_id" int4)  AS $BODY$  INSERT INTO bookmark VALUES (user_id,sura_id,verse_id); 2.  CREATE OR REPLACE PROCEDURE "public"."increase"("u_id" int4)  AS $BODY$  BEGIN  if EXISTS(SELECT * from tasbih WHERE user_id=u_id and date=CURRENT_DATE) then  UPDATE tasbih set count=count+1 WHERE user_id=u_id and date=CURRENT_DATE;  else  INSERT INTO tasbih VALUES (u_id,CURRENT_DATE,1);  end if;  END;
  • 58. 12.  CREATE OR REPLACE PROCEDURE "public"."increase"("u_id" int4)  AS $BODY$  BEGIN  if EXISTS(SELECT * from tasbih WHERE user_id=u_id and date=CURRENT_DATE) then  UPDATE tasbih set count=count+1 WHERE user_id=u_id and date=CURRENT_DATE;  else  INSERT INTO tasbih VALUES (u_id,CURRENT_DATE,1);  end if;  END;
  • 59. Trigger 1.  CREATE TRIGGER upgrade_trigger  after INSERT or UPDATE ON donation  FOR EACH ROW  EXECUTE PROCEDURE upgrade();  CREATE OR REPLACE FUNCTION "public"."upgrade"()  RETURNS "pg_catalog"."trigger" AS $BODY$  DECLARE  dd INT;  BEGIN  SELECT sum(amount) into dd from donation where user_id = new.id;  IF dd>= 499 THEN  UPDATE users SET type = 'premium' WHERE id=new.id;  END if;  RETURN NEW;  END;
  • 60. 2.  CREATE TRIGGER history_trigger  after INSERT or UPDATE ON users  FOR EACH ROW  EXECUTE PROCEDURE user_history();  CREATE OR REPLACE FUNCTION "public"."user_history"()  RETURNS "pg_catalog"."trigger" AS $BODY$  BEGIN  IF not exists ( SELECT * from "location_history" where user_id = new.id and date=CURRENT_DATE and location_id = new.location_id) THEN  INSERT into location_history VALUES (new.id , CURRENT_DATE , new.location_id );   END if;  RETURN NEW;  END;
  • 61. 3.  CREATE trigger add_user_trigger  BEFORE insert or UPDATE of email ON users  FOR EACH ROW  EXECUTE PROCEDURE check_mail();  CREATE OR REPLACE FUNCTION "public"."check_mail"()  RETURNS "pg_catalog"."trigger" AS $BODY$  begin   if exists( SELECT * from users WHERE email= new.email ) then  RAISE EXCEPTION 'Invalid Email --> %', new.sura_id  USING HINT = 'Please check your email';  end if;  RETURN new;  end;
  • 63. E R Diagram with Attributes