package is.idega.idegaweb.golf.service;
import com.idega.data.*;
import is.idega.idegaweb.golf.entity.*;
import com.idega.util.IWTimestamp;
import com.idega.presentation.IWContext;
import com.idega.presentation.ui.DropdownMenu;
import java.sql.*;
import java.util.Hashtable;
import java.util.Vector;
import java.util.List;
import javax.ejb.FinderException;
/**
* Title:
* Description:
* Copyright: Copyright (c) 2001
* Company: idega multimedia
* @author <a href="mailto:aron@idega.is">aron@idega.is</a>
* @version 1.0
*/
public class TariffService {
public TariffService(){
}
public DropdownMenu getExtraCatalogueDropdownMenu(String unionID)throws SQLException{
DropdownMenu drp = new DropdownMenu();
PriceCatalogue[] p = getExtraCatalogues(unionID);
drp.addDisabledMenuElement("0","Engin flokkur valinn !");
for(int i = 0; i < p.length; i++){
drp.addMenuElement(p[i].getID(),p[i].getName());
}
return drp;
}
static public DropdownMenu getExtraCatalogueDropdownMenu(String name,String unionID)throws SQLException{
DropdownMenu drp = new DropdownMenu(name);
PriceCatalogue[] p = getExtraCatalogues(unionID);
drp.addDisabledMenuElement("0","Engin flokkur valinn !");
for(int i = 0; i < p.length; i++){
drp.addMenuElement(p[i].getID(),p[i].getName());
}
return drp;
}
static public String getExtraCatalogueSQL(String union_id){
return "select * from price_catalogue where union_id = "+union_id+" and in_use = 'Y' and is_independent = 'Y'";
}
static public void saveStringMatrixValues(IWContext modinfo , String[][] matrix, String ParameterName){
modinfo.getSession().setAttribute(ParameterName, matrix);
}
static public String[][] getValues(IWContext modinfo, String ParameterName){
if(modinfo.getSession().getAttribute(ParameterName)!= null){
String S[][] = (String[][]) modinfo.getSession().getAttribute(ParameterName);
return S;
}
else return null;
}
static public void saveIntArray(IWContext modinfo , int[] array, String ParameterName){
modinfo.getSession().setAttribute(ParameterName, array );
}
static public int[] retrieveIntArray(IWContext modinfo, String ParameterName){
if(modinfo.getSession().getAttribute(ParameterName)!= null){
int S[] = (int[]) modinfo.getSession().getAttribute(ParameterName);
return S;
}
else return null;
}
static public void saveCatalogArray(IWContext modinfo , PriceCatalogue[] array, String ParameterName){
modinfo.getSession().setAttribute(ParameterName, array );
}
static public PriceCatalogue[] retrieveCatalogArray(IWContext modinfo, String ParameterName){
if(modinfo.getSession().getAttribute(ParameterName)!= null){
PriceCatalogue S[] = (PriceCatalogue[]) modinfo.getSession().getAttribute(ParameterName);
return S;
}
else return null;
}
static public void saveMemberArray(IWContext modinfo,Member[][] memberarray , String ParameterName){
modinfo.getSession().setAttribute(ParameterName, memberarray);
}
static public Member[][] getMemberArray(IWContext modinfo , String ParameterName){
if(modinfo.getSession().getAttribute(ParameterName)!= null){
return (Member[][])modinfo.getSession().getAttribute( ParameterName );
}
else return null;
}
static public void saveVectorArray(IWContext modinfo,Vector[] V, String ParameterName){
modinfo.getSession().setAttribute(ParameterName, V);
}
static public Vector[] retrieveVectorArray(IWContext modinfo, String ParameterName){
if(modinfo.getSession().getAttribute(ParameterName)!= null){
return (Vector[]) modinfo.getSession().getAttribute(ParameterName );
}
else return null;
}
static public void saveIntegerMatrix(IWContext modinfo, Integer[][] matrix ,String ParameterName){
modinfo.getSession().setAttribute(ParameterName, matrix);
}
static public Integer[][] retrieveIntegerMatrix(IWContext modinfo,String ParameterName){
if(modinfo.getSession().getAttribute(ParameterName)!= null){
Integer[][] T = (Integer[][])modinfo.getSession().getAttribute(ParameterName );
return T;
}
else return null;
}
static public void saveInt(IWContext modinfo ,int i,String ParameterName){
modinfo.getSession().setAttribute(ParameterName, new Integer(i));
}
static public int retrieveInt(IWContext modinfo ,String ParameterName){
if(modinfo.getSession().getAttribute(ParameterName)!= null){
Integer mc = (Integer)modinfo.getSession().getAttribute(ParameterName);
return mc.intValue();
}
else return 0;
}
static public void saveHashtable(IWContext modinfo ,Hashtable H , String ParameterName){
modinfo.getSession().setAttribute(ParameterName, H);
}
static public Hashtable retrieveHashtable(IWContext modinfo , String ParameterName){
if(modinfo.getSession().getAttribute(ParameterName)!= null){
Hashtable H = (Hashtable)modinfo.getSession().getAttribute(ParameterName);
return H;
}
else return null;
}
static public void deleteElement(IWContext modinfo, String ParameterName){
if(modinfo.getSession().getAttribute(ParameterName)!= null){
modinfo.getSession().removeAttribute(ParameterName);
}
}
static public List getCatalogList(String union_id) throws SQLException{
List L = EntityFinder.findAllByColumnEquals((PriceCatalogue) IDOLookup.instanciateEntity(PriceCatalogue.class),"union_id",union_id,"in_use","Y","is_independent","N");
return L;
}
static public PriceCatalogue[] getMainCatalogues(String sUnionId){
try{
List L = TariffService.getCatalogList(sUnionId);
if(L != null){
int len = L.size();
PriceCatalogue[] P = new PriceCatalogue[len];
for(int i = 0; i < len ; i++){
P[i] = (PriceCatalogue) L.get(i);
}
return P;
}
return new PriceCatalogue[0];
}
catch(SQLException sql){
return new PriceCatalogue[0];
}
}
static public List getExtraCatalogList(String union_id) throws SQLException{
return EntityFinder.findAllByColumnEquals((PriceCatalogue) IDOLookup.instanciateEntity(PriceCatalogue.class),"union_id",union_id,"in_use","Y","is_independent","Y");
}
static public PriceCatalogue[] getExtraCatalogues(String unionID) throws SQLException{
PriceCatalogue[] PCs = (PriceCatalogue[])((PriceCatalogue) IDOLookup.instanciateEntity(PriceCatalogue.class)).findAll( getExtraCatalogueSQL(unionID));
return PCs;
}
private void addMemberToMembersArray(Vector[] MemberArray,Vector[] MemInfoArray, Member eMember,UnionMemberInfo eUmi,int[] Membergroups){
if(Membergroups != null){
for(int i = 0; i < Membergroups.length; i++){
MemberArray[Membergroups[i]].addElement(eMember);
MemInfoArray[Membergroups[i]].addElement(eUmi);
}
}
else{
// Rest Members
MemberArray[MemberArray.length-1].addElement(eMember);
MemInfoArray[MemInfoArray.length-1].addElement(eUmi);
}
}
static public String getActiveMembersSQL(int iUnionID){
StringBuffer SQLstringbuff = new StringBuffer("select * from union_member_info where union_id = ");
SQLstringbuff.append(iUnionID);
SQLstringbuff.append(" and member_status = 'A' ");
return SQLstringbuff.toString();
}
static public String getDependentMembersSQL(int iUnionID){
return getActiveMembersSQL(iUnionID)+" and (price_catalogue_id is null or price_catalogue_id = 0) ";
}
static public String getIndependentMembersSQL(int iUnionID){
return getActiveMembersSQL(iUnionID)+" and (price_catalogue_id is not null and price_catalogue_id != 0) ";
}
static public int calculateBalance(AccountEntry[] eAccountEntries){
int balance = 0;
if(eAccountEntries.length > 0){
for(int i = 0; i < eAccountEntries.length; i++){
balance += eAccountEntries[i].getPrice();
}
}
return balance;
}
static public Account[] getAccounts(int iMemberId, int iUnionId){
try{
Account[] A = (Account[]) ((Account) IDOLookup.instanciateEntity(Account.class)).findAllByColumnEquals("member_id",String.valueOf(iMemberId),"union_id",String.valueOf(iUnionId));
return A;
}
catch(SQLException sql){
return new Account[0];
}
}
static public int findAccountID(int member_id, int union_id){
int id = -1;
try{
Account[] A = (Account[]) ((Account) IDOLookup.instanciateEntity(Account.class)).findAllByColumnEquals("member_id",String.valueOf(member_id),"union_id",String.valueOf(union_id));
if(A.length > 0)
id = A[0].getID();
}
catch(SQLException e){}
return id;
}
static public Account findAccount(int member_id, int union_id,int accountYearId){
try{
Account[] A = (Account[]) ((Account) IDOLookup.instanciateEntity(Account.class)).findAllByColumnEquals(
"member_id",String.valueOf(member_id),
"union_id",String.valueOf(union_id),
"account_year_id",String.valueOf(accountYearId));
if(A.length > 0)
return A[0];
}
catch(SQLException e){}
return null;
}
static public Account[] findAccounts(int member_id, int union_id){
try{
Account[] A = (Account[]) ((Account) IDOLookup.instanciateEntity(Account.class)).findAllByColumnEquals("member_id",String.valueOf(member_id),"union_id",String.valueOf(union_id));
return A;
}
catch(SQLException e){}
return new Account[0];
}
static public Payment[] getMemberPayments(int iMemberId,int iUnionId){
Payment[] P;
try{
P = (Payment[]) ((Payment) IDOLookup.instanciateEntity(Payment.class)).findAllByColumnEqualsOrdered("member_id",iMemberId,"union_id",iUnionId,"last_updated");
}
catch(SQLException e){
P = new Payment[0];
}
return P;
}
static public Payment[] getMemberPayments(int iAccountId,int iUnionId,IWTimestamp from,IWTimestamp to){
Payment[] P;
Payment entry = (Payment) IDOLookup.instanciateEntity(Payment.class);
StringBuffer sql = new StringBuffer("select * from ");
sql.append(entry.getEntityName());
sql.append(" where account_id = ");
sql.append(iAccountId);
sql.append(" and union_id = ");
sql.append(iUnionId);
if(from !=null){
sql.append(" and payment_date >= '");
sql.append(from.getSQLDate());
sql.append("'");
}
if(to != null){
sql.append(" and payment_date <= '");
sql.append(to.getSQLDate());
sql.append(" 23:59:59'");
}
sql.append(" order by payment_date ");
//System.err.println(sql.toString());
try{
P = (Payment[]) ((Payment) IDOLookup.instanciateEntity(Payment.class)).findAll(sql.toString());
}
catch(SQLException e){
P = new Payment[0];
}
return P;
}
static public AccountEntry[] getAccountEntrys(int iAccountId){
AccountEntry[] E;
try{
E = (AccountEntry[]) ((AccountEntry) IDOLookup.instanciateEntity(AccountEntry.class)).findAllByColumnEqualsOrdered("account_id",String.valueOf(iAccountId),"last_updated");
}
catch(SQLException e){
E = new AccountEntry[0];
}
return E;
}
static public AccountEntry[] getAccountEntrys(int iAccountId,IWTimestamp from,IWTimestamp to){
AccountEntry[] E;
AccountEntry entry = (AccountEntry) IDOLookup.instanciateEntity(AccountEntry.class);
StringBuffer sql = new StringBuffer("select * from ");
sql.append(entry.getEntityName());
sql.append(" where account_id = ");
sql.append(iAccountId);
if(from !=null){
sql.append(" and last_updated >= '");
sql.append(from.getSQLDate());
sql.append("'");
}
if(to != null){
sql.append(" and last_updated <= '");
sql.append(to.getSQLDate());
sql.append(" 23:59:59'");
}
sql.append(" order by last_updated ");
//System.err.println(sql.toString());
try{
E = (AccountEntry[]) ((AccountEntry) IDOLookup.instanciateEntity(AccountEntry.class)).findAll(sql.toString());
}
catch(SQLException e){
E = new AccountEntry[0];
}
return E;
}
static public AccountEntry[] getTariffEntrys(int iAccountId){
AccountEntry[] E;
try{
E = (AccountEntry[]) ((AccountEntry) IDOLookup.instanciateEntity(AccountEntry.class)).findAllByColumnEqualsOrdered("account_id",String.valueOf(iAccountId),"info","�lagning","last_updated");
}
catch(SQLException e){
E = new AccountEntry[0];
}
return E;
}
static public AccountEntry[] getTariffEntrys(int iAccountId,IWTimestamp from,IWTimestamp to){
AccountEntry[] E;
AccountEntry entry = (AccountEntry) IDOLookup.instanciateEntity(AccountEntry.class);
StringBuffer sql = new StringBuffer("select * from ");
sql.append(entry.getEntityName());
sql.append(" where account_id = ");
sql.append(iAccountId);
sql.append(" and info = '�lagning'");
if(from !=null){
sql.append(" and last_updated >= '");
sql.append(from.getSQLDate());
sql.append("'");
}
if(to != null){
sql.append(" and last_updated <= '");
sql.append(to.getSQLDate());
sql.append(" 23:59:59'");
}
sql.append(" order by last_updated ");
//System.err.println(sql.toString());
try{
E = (AccountEntry[]) ((AccountEntry) IDOLookup.instanciateEntity(AccountEntry.class)).findAll(sql.toString());
}
catch(SQLException e){
E = new AccountEntry[0];
}
return E;
}
static public void makePayment(int memberID,int iAccountId,int iUnionId ,int RoundId, int Price , boolean Status , String Name, String Info , int InstallmentNumber, int Totalinstallments, int PaymentTypeID, Timestamp PayDate ,Timestamp last_updated, int cashier_id) throws SQLException {
Payment P = (Payment) IDOLookup.createLegacy(Payment.class);
P.setAccountId(iAccountId);
P.setMemberId(memberID);
P.setRoundId( RoundId );
P.setPrice(Price );
P.setStatus( Status ); // False meaning; has not been paid
P.setExtraInfo( Info );
P.setName(Name);
P.setInstallmentNr( InstallmentNumber );
P.setTotalInstallment( Totalinstallments );
P.setPaymentTypeID( PaymentTypeID );
P.setPaymentDate( PayDate );
P.setLastUpdated(last_updated);
P.setCashierId(cashier_id);
P.setUnionId(iUnionId);
P.insert();
}
static public Account makeNewAccount(int MemberId,int UnionId,String Name,int CashierId,int accountYearId){
Account A = (Account) IDOLookup.createLegacy(Account.class);
A.setBalance(0);
A.setName(String.valueOf(MemberId));
A.setValid(true);
A.setExtraInfo("");
A.setCashierId(CashierId);
A.setCreationDate(IWTimestamp.getTimestampRightNow());
A.setLastUpdated(IWTimestamp.getTimestampRightNow());
A.setMemberId(MemberId);
A.setUnionId(UnionId);
A.setAccountYear(accountYearId);
int ret = -1;
try{
A.insert() ;
//ret = A.getID();
//System.err.print("st reikn "+ret);
return A;
}
catch(SQLException sql){
sql.printStackTrace() ;
//ret = -1;
}
return null;
}
static public AccountEntry makeAnAccountEntry(int AccountId,int Price, String Name,String Info,String AccountKey,String EntryKey,String TariffKey,int CashierId,Timestamp PaymentDate,Timestamp LastUpdated) throws SQLException, FinderException{
AccountEntry E = (AccountEntry) IDOLookup.createLegacy(AccountEntry.class);
E.setAccountId(AccountId);
E.setPrice(Price);
E.setName(Name);
E.setAccountKey(AccountKey);
E.setEntryKey(EntryKey);
E.setTariffKey(TariffKey);
E.setInfo(Info);
E.setCashierId(CashierId);
E.setPaymentDate(PaymentDate);
E.setLastUpdated(LastUpdated);
E.insert();
Account A = ((AccountHome) IDOLookup.getHomeLegacy(Account.class)).findByPrimaryKey(AccountId);
A.addToBalance(Price);
A.update();
return E;
}
static public void makeAccountEntry(int AccountId,int Price, String Name,String Info,String AccountKey,String EntryKey,String TariffKey,int CashierId,Timestamp PaymentDate,Timestamp LastUpdated) throws SQLException, FinderException{
AccountEntry E = (AccountEntry) IDOLookup.createLegacy(AccountEntry.class);
E.setAccountId(AccountId);
E.setPrice(Price);
E.setName(Name);
E.setAccountKey(AccountKey);
E.setEntryKey(EntryKey);
E.setTariffKey(TariffKey);
E.setInfo(Info);
E.setCashierId(CashierId);
E.setPaymentDate(PaymentDate);
E.setLastUpdated(LastUpdated);
E.insert();
Account A = ((AccountHome) IDOLookup.getHomeLegacy(Account.class)).findByPrimaryKey(AccountId);
A.addToBalance(Price);
A.update();
}
static public String getFamilySql(int iUnionId, int iFamilyId){
StringBuffer sql = new StringBuffer();
sql.append("select member_id,first_name,middle_name,last_name,date_of_birth,gender,image_id,social_security_number,email ");
sql.append("from member,union_member_info ");
sql.append("where member.member_id = union_member_info.member_id ");
sql.append("and union_member_info.union_id = ");
sql.append(iUnionId);
sql.append(" and union_member_info.family_id = ");
sql.append(iFamilyId);
return sql.toString() ;
}
static public List getMemberFamily(int iMemberId,int iUnionId){
try{
UnionMemberInfo umi = ((MemberHome) IDOLookup.getHomeLegacy(Member.class)).findByPrimaryKey(iMemberId).getUnionMemberInfo(iUnionId);
List M = EntityFinder.findAll((Member) IDOLookup.instanciateEntity(Member.class),getFamilySql(iUnionId,umi.getFamilyId()));
return M;
}
catch(SQLException sql){
sql.printStackTrace();
return null;
}
catch(FinderException fe) {
fe.printStackTrace();
return null;
}
}
}// class Tariffer