%:-clrscr.
bank(georgis,abysinia,4,6).
bank(center,awash,4,7).
bank(gebeya,cbe,2,5).
bank(west,westcost,9,6).
go:-start.
start:-  write('---------------------Welcome----------------------'),nl,
         write('===================================================='),nl,
	 write('========== BANK INFORMATION SYSTEM ================='),nl,
	 write('===================================================='),nl,nl,
	 write('Press a to find location and name of bank using IR'),nl,
	 write('Press b to find location and name of bank using LR'),nl,
         write('press c to name of bank with max interst rate'),nl,
         write('press d to name of bank with min lending rate'),nl,
         write('press f add more bank on running prolog editor'),nl,nl,
	read(C),choice(C),nl,write('Do you to continue? if yes press (y/n)'),nl,
		  read(R),(R=y,start).
choice(C):-(C=a,s1;C=b,s2;C=c, oldest(N1),searchnl(N1); C=d, mini(N1),searchmini(N1) ; C=f, addNewFacts).

%========question 1 ================================================================================== 
%interest rate search

s1:-write('Enter Interest Rate'),nl,
	     read(Ir),nl,interest(Ir).

interest(Ir):-write('Enter e for specific inter rate (eg. 4)'),nl,
	      write('Enter g for interest rate greater than some value'),nl,
	      write('Enter l for interest rate less than some value'),nl,
              read(Ch1),nl,
	      searchn(Ir,Ch1).

searchn(Ir,'e'):-bank(A,B,Ir,_),write('Bank Name = '),write(B),
			        write('  Bank Location = '),write(A),nl.

searchn(Ir,'g'):-bank(A,B,V,_),V>Ir,write('Bank Name = '),write(B),
	                            write('  Bank Location = '),write(A),nl.

searchn(Ir,'l'):-bank(A,B,V,_),V<Ir,write('Bank Name = '),write(B),
	                            write('  Bank Location = '),write(A),nl.

%=========question 2 ================================================================================= 
%Lending rate search

s2:-write('Enter LENDING rate: '),nl,
read(Lr),nl,lending(Lr).
lending(Ir):-write('Enter e for specific inter rate (eg. 4)'),nl,
	     write('Enter g for interest rate greater than some value'),nl,
             write('Enter l for interest rate less than some value'),nl,
             read(Ch1),nl,
	     searchnl(Ir,Ch1).

searchnl(Ir,'e'):-bank(A,B,_,Ir),write('Bank Name = '),write(B),
				 write('  Bank Location = '),write(A),nl.

searchnl(Ir,'g'):-bank(A,B,_,C),C>Ir,write('Bank Name = '),write(B),
	                             write('  Bank Location = '),write(A),nl.

searchnl(Ir,'l'):-bank(A,B,_,C),C<Ir,write('Bank Name  = '),write(B),
				     write('  Bank Location = '),write(A),nl.



%=========question 3=================================================================================  

% Maximum Interest Rate

oldest(N1):- bank(X,_,N1,_), not( thereAreOlders(X)), !.
thereAreOlders(X):- bank(X,_,N,_), bank(_,_,M,_), M > N.

searchnl(Ir):-bank(A,B,Ir,_),write('Recommended Highest IR'),nl,
	                     write('Bank Name  = '),write(B),
			     write('  Bank Location = '),write(A), write('  IR = '),write(Ir),nl.
                    

%===============question 4============================================================================



% Minimum Interest Rate


mini(N1):- bank(X,_,N1,_), not( thereAreOldersmini(X)), !.
thereAreOldersmini(X):- bank(X,_,N,_), bank(_,_,M,_), M < N.

searchmini(Ir):-bank(A,B,Ir,_),nl,write('The Bank which has Minimum Interest Rate:'),nl,
	                          write('Bank Name  = '),write(B),
			          write('  Bank Location = '),write(A),nl.


%===============question 5=============================================================================
addNewFacts:-write('==============================='),nl,
             write('==  Bank Information Form  ===='),nl,
             write('==============================='),nl,

             write('Enter Bank Name : '),read(N),nl,
             write('Enter Bank Location : '),read(L),nl,
             write('Enter Interest Rate : '),read(IR),nl,
             write('Enter Lending Rate : '),read(LR),nl,

             assert(banks(N,L,IR,LR)),write('Successfully Added\n***USE listing(banks) command to view all the add banks'),nl.
	     repeata.
repeata:-nl,write('To go back to Menu Enter m else\nEnter e to exit'),nl,
	read(Choice),nl,
	redirector(Choice),nl.

redirector('m'):-menu.
redirector('e'):-write('\t ____________________________________________ '),nl,
	         write('\t\u8686\tThank You For using This Bank System \u8686'),nl,
		 write('\t\u8686\t                                     \u8686'),nl,
		 write('\t\u8686\t\tProgramed By: Mulugeta Muche.\u8686'),nl,
		 write('\t ____________________________________________ ').


%=========================================================================================
cls:- jok.
jok:-put(27),put(91),put(56),put(74). 
:-message.
:-clear_screen.
:-jok.

