package is.idega.idegaweb.golf.service.member;
import is.idega.idegaweb.golf.block.image.presentation.GolfImage;
import is.idega.idegaweb.golf.entity.Address;
import is.idega.idegaweb.golf.entity.Card;
import is.idega.idegaweb.golf.entity.CardHome;
import is.idega.idegaweb.golf.entity.Family;
import is.idega.idegaweb.golf.entity.Group;
import is.idega.idegaweb.golf.entity.Member;
import is.idega.idegaweb.golf.entity.MemberHome;
import is.idega.idegaweb.golf.entity.MemberInfo;
import is.idega.idegaweb.golf.entity.Phone;
import is.idega.idegaweb.golf.entity.Union;
import is.idega.idegaweb.golf.entity.UnionHome;
import is.idega.idegaweb.golf.entity.UnionMemberInfo;
import is.idega.idegaweb.golf.service.FamilyDisconnecterWindow;
import is.idega.idegaweb.golf.service.FamilyInsertWindow;
import is.idega.idegaweb.golf.service.GroupMemberInsertWindow;
import is.idega.idegaweb.golf.service.GroupMemberRemoveWindow;
import java.io.IOException;
import java.sql.SQLException;
import java.util.Vector;
import javax.ejb.FinderException;
import com.idega.block.media.presentation.ImageInserter;
import com.idega.data.IDOLookup;
import com.idega.presentation.Editor;
import com.idega.presentation.IWContext;
import com.idega.presentation.Image;
import com.idega.presentation.PresentationObject;
import com.idega.presentation.Table;
import com.idega.presentation.text.Link;
import com.idega.presentation.text.Text;
import com.idega.presentation.ui.BorderTable;
import com.idega.presentation.ui.Form;
import com.idega.presentation.ui.SubmitButton;
/**
* Title:
* Description:
* Copyright: Copyright (c) 2001
* Company:
* @author
* @version 1.0
*/
public class GolfMemberInsert extends Editor{
private AddressInsert addressInsert,addressInsert2;
private MemberInsert memberInsert;
private PhoneInsert phoneInsert1, phoneInsert2, phoneInsert3;
private UnionMemberInfoInsert unionMemberInfoInsert;
private CardInsert cardInsert;
private MemberInfoInsert memberInfoInsert;
private String sMemberImageURL = "/pics/member/x.gif";
private Image memberImg = null;
private Member eMember = null;
private Union eUnion = null;
private UnionMemberInfo eUMI = null;
private MemberInfo eMemberInfo = null;
private Card eCard = null;
private Address[] eAddresses = null;
private Phone[] ePhones = null;
private String imageId = null;
private boolean bUpdate;
private int iMemberId = -1;
private int iUnionId = -1;
private String sAction = "member.file.action";
public GolfMemberInsert( int iUnionId)throws SQLException {
this.iUnionId = iUnionId;
this.bUpdate = false;
}
public GolfMemberInsert( int iMemberId, int iUnionId)throws SQLException {
this.iMemberId = iMemberId;
this.iUnionId = iUnionId;
this.bUpdate = true;
}
protected void control(IWContext modinfo){
try{
entitySearch();
init(modinfo);
this.makeView();
String cmd = modinfo.getParameter("cmd");
if("submit".equalsIgnoreCase(cmd))
insert(modinfo);
addMain(this.showInputForm(modinfo));
}
catch(Exception ex){
ex.printStackTrace();
}
}
protected PresentationObject makeLinkTable(int menuNr){
return new Text("");
}
private void entitySearch(){
try{
if(iUnionId != -1){
eUnion = ((UnionHome) IDOLookup.getHomeLegacy(Union.class)).findByPrimaryKey(iUnionId);
if(iMemberId != -1)
try{
eMember = ((MemberHome) IDOLookup.getHomeLegacy(Member.class)).findByPrimaryKey(iMemberId);
eUMI = eMember.getUnionMemberInfo(iUnionId);
eMemberInfo = eMember.getMemberInfo();
eAddresses = eMember.getAddress();
ePhones = eMember.getPhone();
eCard = ((CardHome) IDOLookup.getHomeLegacy(Card.class)).findByPrimaryKey(eUMI.getCardId());
}
catch(SQLException sql){
sql.printStackTrace();
}
}
}
catch(FinderException fe) {
fe.printStackTrace();
}
}
private void init(IWContext modinfo)throws Exception{
if(this.bUpdate){
new Image(this.sMemberImageURL);
int addressLength = this.eAddresses.length;
int phoneLength = this.ePhones.length;
this.memberInsert = new MemberInsert(this.eMember);
addressInsert = addressLength > 0 ? new AddressInsert(eAddresses[0],"street1","country1","zip1"):new AddressInsert("street1","country1","zip1");
addressInsert2 = addressLength > 1? new AddressInsert(eAddresses[1],"street2","country2","zip2"):new AddressInsert("street3","country3","zip3");
phoneInsert1 = phoneLength > 0 ? new PhoneInsert(ePhones[0],"phone1","country1","phonetype1"): new PhoneInsert( "phone1", "country1", "phonetype1");
phoneInsert2 = phoneLength > 1? new PhoneInsert( ePhones[1],"phone2","country2","phonetype2"): new PhoneInsert( "phone2", "country2", "phonetype2");
phoneInsert3 = phoneLength > 2? new PhoneInsert( ePhones[2],"phone3","country3","phonetype3"): new PhoneInsert( "phone3", "country3", "phonetype3");
unionMemberInfoInsert = eUMI != null? new UnionMemberInfoInsert( eUMI): new UnionMemberInfoInsert(this.iUnionId);
memberInfoInsert = this.eMemberInfo != null? new MemberInfoInsert( eMemberInfo): new MemberInfoInsert();
if(this.eCard != null){
int id = eCard.getID();
cardInsert = ((id != -1) && (id!= 1) )? new CardInsert(eCard): new CardInsert();
}
}
else{
addressInsert = new AddressInsert( "heimili1", "heimililand1", "postnr1");
addressInsert2 = new AddressInsert( "heimili2", "heimililand2", "postnr2");
memberInsert = new MemberInsert();
phoneInsert1 = new PhoneInsert( "phone1", "country1", "phonetype1");
phoneInsert2 = new PhoneInsert("phone2", "country2", "phonetype2");
phoneInsert3 = new PhoneInsert( "phone3", "country3", "phonetype3");
unionMemberInfoInsert = new UnionMemberInfoInsert(this.iUnionId);
cardInsert = new CardInsert();
memberInfoInsert = new MemberInfoInsert();
}
}
public PresentationObject showInputForm(IWContext modinfo)throws IOException, SQLException, FinderException {
Form form = new Form();
boolean isUpdating = false;
if(modinfo.getRequest().getParameter("cmd") != null && modinfo.getRequest().getParameter("cmd").equalsIgnoreCase("submit")) {
isUpdating = true;
}
imageId = (String) modinfo.getSession().getAttribute("image_id");
if(imageId != null) {
memberImg = new GolfImage(Integer.parseInt( imageId));
modinfo.getSession().removeAttribute("image_id");
}
else {
if( eMember != null && eMember.getImageId() != 1)
memberImg = new GolfImage(eMember.getImageId());
else
memberImg = new Image("/pics/member/x.gif");
}
memberImg.setWidth(110);
if(eMember != null)
form.setAction(modinfo.getRequest().getRequestURI()+"?cmd=submit&image_id="+imageId+"&member_id="+eMember.getID());
else
form.setAction(modinfo.getRequest().getRequestURI()+"?cmd=submit&image_id="+imageId);
ImageInserter imageInsert = new ImageInserter("image_id");
imageInsert.setHasUseBox(false);
imageInsert.setMaxImageWidth(110);
//imageInsert.setDefaultImageURL("/pics/member/x.gif");
Table table = new Table(7, 5);
table.setBorder( 1);
int firstrow = 1;
int secondrow = 3;
if(isUpdating) {
Text text = new Text("Er a� vista", true, true, true);
text.setFontColor("red");
text.setFontSize("4");
//table.add(text, 3, 2);
}
//table.setAlignment("center");
table.setCellpadding(0);
table.setCellspacing(0);
table.setHeight(2,"10");
table.setHeight(4,"10");
table.setWidth(2,"10");
table.setWidth(4,"10");
table.setWidth(6,"10");
table.setRowVerticalAlignment(1,"top");
table.setRowVerticalAlignment(3,"top");
//table.setColumnAlignment(1,"center");
//table.setVerticalAlignment(1,3,"bottom");
BorderTable memberTable = getMemberTable();
BorderTable addressTable = getAddressTable();
BorderTable phoneTable = getPhoneTable();
BorderTable cardTable = getCardTable();
BorderTable groupTable = getGroupTable();
BorderTable unionMemInfTable = getUnionMemberInfoTable();
BorderTable memberInfoTable = getMemberInfoTable();
BorderTable familyTable = getFamilyTable(modinfo);
memberTable.setColor(LightColor);
addressTable.setColor(LightColor);
phoneTable.setColor(LightColor);
cardTable.setColor(LightColor);
unionMemInfTable.setColor(LightColor);
memberInfoTable.setColor(LightColor);
familyTable.setColor(LightColor);
groupTable.setColor(LightColor);
memberTable.setBorderColor(DarkColor);
addressTable.setBorderColor(DarkColor);
phoneTable.setBorderColor(DarkColor);
memberInfoTable.setBorderColor(DarkColor);
unionMemInfTable.setBorderColor(DarkColor);
cardTable.setBorderColor(DarkColor);
familyTable.setBorderColor(DarkColor);
groupTable.setBorderColor(DarkColor);
int b = 1;
memberTable.setBorder(b);
addressTable.setBorder(b);
phoneTable.setBorder(b);
memberInfoTable.setBorder(b);
unionMemInfTable.setBorder(b);
cardTable.setBorder(b);
familyTable.setBorder(b);
groupTable.setBorder(b);
int width = 210;
int height = 210;
memberTable.setWidth(width);
addressTable.setWidth(width);
phoneTable.setWidth(width);
cardTable.setWidth(width);
unionMemInfTable.setWidth(width);
//memberInfoTable.setWidth(width);
memberTable.setHeight(height);
addressTable.setHeight(height);
phoneTable.setHeight(height);
cardTable.setHeight(height);
unionMemInfTable.setHeight(height);
//memberInfoTable.setHeight(height);
//table.add(imageChange, 1, 3);
table.add(imageInsert, 1, firstrow);
table.add(formatText("Forgj�f"),1,firstrow);
table.add(memberInfoTable, 1, firstrow);
table.add(formatText("F�lagi"),3,firstrow);
table.add(memberTable,3,firstrow);
table.add(formatText("Heimili"),5,firstrow);
table.add(addressTable,5,firstrow);
table.add(formatText("S�mar"),7,firstrow);
table.add(phoneTable,7,firstrow);
table.add(formatText("F�lagi�"),5,secondrow);
table.add(unionMemInfTable, 5,secondrow);
table.add(formatText("Korti�"),7,secondrow);
table.add(cardTable, 7, secondrow);
if(iMemberId != -1) {
table.add(formatText("Fj�lskylda"),3,secondrow);
table.add(familyTable, 3, secondrow);
table.add(getFamilyLinkTable(),3,secondrow);
table.add(formatText("H�par"),3,secondrow);
table.add(groupTable, 3, secondrow);
table.add(getGroupLinkTable(),3,secondrow);
}
table.add(Text.getBreak(),1,secondrow);
table.add(new SubmitButton(new Image("/pics/formtakks/vista.gif")), 1, secondrow);
table.setColor("#FFFFFF");
table.setCellspacing(0);
form.add(table);
return form;
}
private void insert(IWContext modinfo)throws SQLException, IOException {
Union union = this.eUnion;
if(eMember == null) {
Family family = (Family) IDOLookup.createLegacy(Family.class);
family.insert();
unionMemberInfoInsert.getUnionMemberInfo().setFamily(family);
}
imageId = modinfo.getRequest().getParameter("image_id");
if((imageId != null) && (! imageId.equals("null"))) {
memberInsert.getMember().setImageId(Integer.parseInt(imageId));
}
memberInsert.store(modinfo);
eMember = memberInsert.getMember();
memberInfoInsert.setMemberId(eMember.getID());
memberInfoInsert.store(modinfo);
phoneInsert1.store(modinfo,eMember);
phoneInsert2.store(modinfo,eMember);
phoneInsert3.store(modinfo,eMember);
addressInsert.store(modinfo,eMember);
addressInsert2.store(modinfo,eMember);
cardInsert.store(modinfo);
unionMemberInfoInsert.setMemberId(eMember.getID());
int cardID = cardInsert.getCard().getID();
if(cardID == -1)
unionMemberInfoInsert.setCardId(1);
else
unionMemberInfoInsert.setCardId(cardID);
if(eMember.isMemberInUnion()){
//ef ekki � �essu unioni
if(! eMember.isMemberInUnion(union) ) {
eMember.addTo(union);
unionMemberInfoInsert.setMembershipType("sub");
unionMemberInfoInsert.setMemberStatus("A");
}
}
else{
eMember.addTo(union);
unionMemberInfoInsert.setMembershipType("main");
unionMemberInfoInsert.setMemberStatus("A");
}
unionMemberInfoInsert.store(modinfo);
if(modinfo.getSession().getAttribute("image_id") != null) {
String imId = (String) modinfo.getSession().getAttribute("image_id");
eMember.setimage_id(Integer.parseInt(imId));
modinfo.getSession().removeAttribute("image_id");
}
//modinfo.getResponse().sendRedirect(modinfo.getRequest().getRequestURI()+"?&member_id="+eMember.getID());
//getPage().setToRedirect(modinfo.getRequest().getRequestURI()+"?&member_id="+member.getID());
}
public BorderTable getAddressTable() {
BorderTable hTable = new BorderTable();
Table table = new Table(2, 6);
hTable.add(table);
table.add(addressInsert.formatText("Heimili"), 1, 1);
table.add(addressInsert.formatText("P�stnr"), 1, 2);
table.add(addressInsert.formatText("Land"), 1, 3);
table.add(addressInsert.formatText("Heimili 2"), 1, 4);
table.add(addressInsert.formatText("P�stnr"), 1, 5);
table.add(addressInsert.formatText("Land"), 1, 6);
table.add(addressInsert.getInputAddress(), 2, 1);
table.add(addressInsert.getDropZipcode(), 2, 2);
table.add(addressInsert.getDropCountry(), 2, 3);
table.add(addressInsert2.getInputAddress(), 2, 4);
table.add(addressInsert2.getDropZipcode(), 2, 5);
table.add(addressInsert2.getDropCountry(), 2, 6);
return hTable;
}
public BorderTable getPhoneTable() {
BorderTable hTable = new BorderTable();
Table table = new Table(2, 3);
hTable.add(table);
phoneInsert1.getInputPhoneNumber().setSize(11);
phoneInsert2.getInputPhoneNumber().setSize(11);
phoneInsert3.getInputPhoneNumber().setSize(11);
table.add(phoneInsert1.getDropType(), 1, 1);
table.add(phoneInsert1.getInputPhoneNumber(), 2, 1);
table.add(phoneInsert2.getDropType(), 1, 2);
table.add(phoneInsert2.getInputPhoneNumber(), 2, 2);
table.add(phoneInsert3.getDropType(), 1, 3);
table.add(phoneInsert3.getInputPhoneNumber(), 2, 3);
table.setCellpadding(3);
return hTable;
}
public BorderTable getCardTable() {
return cardInsert.getInputTable();
}
public BorderTable getMemberTable() {
return memberInsert.getInputTable();
}
public BorderTable getUnionMemberInfoTable() {
return unionMemberInfoInsert.getInputTable();
}
public BorderTable getMemberInfoTable() {
return this.memberInfoInsert.getInputTable();
}
/*public HeaderTable getGroupTable() {
return this.groupInsert.getInputTable(false);
}*/
public BorderTable getGroupTable() {
BorderTable hTable = new BorderTable();
//hTable.setHeaderText("Flokkar");
try {
if(eMember!=null){//debug eiki
Union uni = ((UnionHome) IDOLookup.getHomeLegacy(Union.class)).findByPrimaryKey(iUnionId);
Group[] groupArr = null;
Group[] grArr = null;
Group theGroup = (Group) IDOLookup.instanciateEntity(Group.class);
grArr = (Group[]) theGroup.findAll("select group_.* from group_, union_group, group_member where member_id = '"+eMember.getID()+"' and group_.group_id = group_member.group_id and union_group.group_id = group_member.group_id and union_group.union_id = 3");
groupArr = (Group[]) theGroup.findAll("select group_.* from group_, union_group, group_member where member_id = '"+eMember.getID()+"' and group_.group_id = group_member.group_id and union_group.group_id = group_member.group_id and union_group.union_id = "+uni.getID());
groupArr = joinArrays(grArr, groupArr);
Table table = new Table(1, groupArr.length);
table.setAlignment("center");
int i = 0;
for (; i < groupArr.length; i++) {
Text t = new Text(groupArr[i].getName(), true, false, false);
t.setFontFace("Arial");
t.setFontSize(2);
table.add(t, 1, i+1);
}
hTable.add(table);
}
else {
Table empty = new Table(1, 1);
empty.add("�a� �arf a� vista ��ur<br>en flokkur er valinn");
hTable.add(empty);
}
}
catch(Exception e) {
e.printStackTrace();
}
return hTable;
}
public PresentationObject getGroupLinkTable() throws SQLException, FinderException{
Union uni = ((UnionHome) IDOLookup.getHomeLegacy(Union.class)).findByPrimaryKey(iUnionId);
GroupMemberInsertWindow group = new GroupMemberInsertWindow(eMember, uni, false);
Link linkInsertGroup = new Link(new Image("/pics/formtakks/finna.gif"), group);
GroupMemberRemoveWindow groupRem = new GroupMemberRemoveWindow(eMember, uni, false);
Link linkRemoveGroup = new Link(new Image("/pics/formtakks/slitafra.gif"),groupRem);
Table T = new Table(2, 1);
T.add(linkInsertGroup, 1, 1);
T.add(linkRemoveGroup, 2, 1);
return T;
}
public PresentationObject getFamilyLinkTable() throws SQLException, FinderException{
Table T = new Table(2,1);
FamilyInsertWindow findFam = new FamilyInsertWindow(iMemberId,iUnionId);
Link linkFindFamily = new Link(new Image("/pics/formtakks/finna.gif"),findFam);
FamilyDisconnecterWindow winNewFamily = new FamilyDisconnecterWindow(iMemberId, iUnionId);
Link linkNewFamily = new Link(new Image("/pics/formtakks/slitafra.gif"),winNewFamily);
T.add(linkNewFamily,1,1);
T.add(linkFindFamily,2,1);
return T;
}
public BorderTable getFamilyTable(IWContext modinfo) throws SQLException, FinderException{
BorderTable familyTable = new BorderTable();
UnionMemberInfo uniMem = null;
if(eMember != null) {
uniMem = eMember.getUnionMemberInfo(iUnionId);
if(uniMem!=null) {
//debug eiki added union_id
UnionMemberInfo[] uniarr = ( UnionMemberInfo[])uniMem.findAll("select * from union_member_info where family_id="+uniMem.getFamilyId()+" and union_id="+this.iUnionId);
Vector vector = new Vector();
for( int k=0; k<uniarr.length ; k++){
if(eMember != null && uniarr[k].getMemberID() != eMember.getID())
vector.addElement(((MemberHome) IDOLookup.getHomeLegacy(Member.class)).findByPrimaryKey( uniarr[k].getMemberID() ));
}
Table familyInnerTable = new Table(1, vector.size());
for (int i = 0; i < vector.size(); i++) {
familyInnerTable.add(new Link( ((Member)vector.elementAt(i)).getName(), modinfo.getRequestURI()+"?member_id="+( (Member)vector.elementAt(i) ).getID()),1,i+1);
}
familyTable.add(familyInnerTable);
}
}
return familyTable;
}
public Text formatText(String s){
Text T= new Text();
if(s!=null){
T= new Text(s);
T.setFontColor(this.DarkColor);
T.setFontSize(this.fontSize);
T.setBold();
}
return T;
}
public Text formatText(int i){
return formatText(String.valueOf(i));
}
private Group[] joinArrays(Group[] p1, Group[] p2) {
Vector v = new Vector();
for(int i = 0; i < p1.length; i++) {
v.add(p1[i]);
}
for(int i = 0; i < p2.length; i++) {
v.add(p2[i]);
}
Group[] returnEntity = new Group[v.size()];
for(int i = 0; i < v.size(); i++) {
returnEntity[i] = (Group) v.get(i);
}
return returnEntity;
}
public void setMemberImageURL(String url){
this.sMemberImageURL = url;
}
}