Subversion Repositories SmartDukaan

Rev

Rev 2313 | Rev 2835 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
167 ashish 1
package in.shop2020.hotspot.dashbaord.client;
2
 
438 rajveer 3
import in.shop2020.hotspot.dashbaord.client.admin.AdminPresenter;
167 ashish 4
import in.shop2020.hotspot.dashbaord.client.event.LoadOrderListEvent;
306 ashish 5
import in.shop2020.hotspot.dashbaord.client.event.SignOutEvent;
6
import in.shop2020.hotspot.dashbaord.client.event.SignOutEventHandler;
167 ashish 7
import in.shop2020.hotspot.dashbaord.client.event.SubmitLoginInfoEvent;
8
import in.shop2020.hotspot.dashbaord.client.event.SubmitLoginInfoHandler;
9
import in.shop2020.hotspot.dashbaord.client.inbox.InboxPresenter;
10
import in.shop2020.hotspot.dashbaord.shared.actions.AuthRequest;
11
import in.shop2020.hotspot.dashbaord.shared.actions.AuthResponse;
345 ashish 12
import in.shop2020.hotspot.dashbaord.shared.actions.AuthResponse.NEXT;
167 ashish 13
 
14
import net.customware.gwt.dispatch.client.DispatchAsync;
15
 
16
import org.enunes.gwt.mvp.client.EventBus;
17
import org.enunes.gwt.mvp.client.presenter.BasePresenter;
18
import org.enunes.gwt.mvp.client.presenter.Presenter;
19
 
20
import com.google.gwt.user.client.rpc.AsyncCallback;
21
import com.google.inject.Inject;
22
import com.google.inject.Provider;
23
 
24
public class MainPresenterImpl extends BasePresenter<MainPresenter.Display> implements MainPresenter{
25
 
26
	private final Provider<InboxPresenter> inboxProvider;
27
	private final LoginDisplayPresenter lPresenter;
438 rajveer 28
	private final Provider<AdminPresenter> adminProvider;
167 ashish 29
	private Presenter<? extends org.enunes.gwt.mvp.client.view.Display> presenter;
30
	private final DispatchAsync dispatcher;
31
 
32
	@Inject
33
	public MainPresenterImpl(EventBus eventBus, Display display, LoginDisplayPresenter loginpresenter, 
438 rajveer 34
			Provider<InboxPresenter> inboxProvider, Provider<AdminPresenter> adminPresenter,final DispatchAsync dispatcher ) {
167 ashish 35
		super(eventBus, display);
36
		this.inboxProvider = inboxProvider;
438 rajveer 37
		this.adminProvider = adminPresenter;
167 ashish 38
		lPresenter = loginpresenter;
39
		lPresenter.bind();
40
		this.dispatcher = dispatcher;
41
		display.addContent(loginpresenter.getDisplay());
42
	}
43
 
44
	private void switchPresenter(
45
			Presenter<? extends org.enunes.gwt.mvp.client.view.Display> presenter) {
46
 
47
		if (this.presenter != null) {
48
			this.presenter.unbind();
49
			display.removeContent();
50
		}
51
 
52
		this.presenter = presenter;
53
 
54
		if (presenter != null) {
55
			display.addContent(presenter.getDisplay());
56
			this.presenter.bind();
57
		}
58
 
59
	}
60
 
61
	@Override
62
	public void bind(){
63
		super.bind();
306 ashish 64
		registerHandler(eventBus.addHandler(SignOutEvent.getType(), new SignOutEventHandler() {
65
 
66
			@Override
67
			public void doSignout(SignOutEvent event) {
68
				signOut();
69
			}
70
		}));
71
 
167 ashish 72
		registerHandler(eventBus.addHandler(SubmitLoginInfoEvent.getType(), new SubmitLoginInfoHandler() {
73
 
74
			@Override
75
			public void onSubmitLoginInfo(SubmitLoginInfoEvent event) {
76
 
77
				dispatcher.execute(new AuthRequest(event.getUserName(), event.getPassword()), new  AsyncCallback<AuthResponse>() {
78
 
79
					@Override
80
					public void onFailure(Throwable caught) {
81
						lPresenter.showError("You do not seem in good terms with auth server. It is lost!");
82
					}
83
 
84
					@Override
85
					public void onSuccess(AuthResponse result) {
86
						doAuth(result);
87
					}
88
				});				
89
			}
90
		}));
91
	}
92
 
93
	private void doAuth(AuthResponse result){
94
		if (result.isStatus()){
95
			lPresenter.showError("Welcome! "+ result.getUsername() +", "+ result.getMessage());
96
 
345 ashish 97
			if(result.getNext() == NEXT.INBOX){
98
				final InboxPresenter inboxPresenter = inboxProvider.get();
99
				inboxPresenter.setUsername(result.getUsername());
493 rajveer 100
				inboxPresenter.setWarehouseId(result.getWarehouseId());
2449 chandransh 101
				inboxPresenter.setAdmin(result.isAdmin());
102
				inboxPresenter.initialize();
103
 
345 ashish 104
				//inboxPresenter.refreshOrderList();
105
 
106
				inboxPresenter.getDisplay().changeGreeting(result.getUsername());
107
				switchPresenter(inboxPresenter);
108
				eventBus.fireEvent(new LoadOrderListEvent());
109
			}
438 rajveer 110
 
345 ashish 111
			if(result.getNext() == NEXT.ADMIN){
112
				final AdminPresenter adminPresenter = adminProvider.get();
113
				adminPresenter.initialize();
114
				switchPresenter(adminPresenter);
115
				//fire event to load adminPresenter
438 rajveer 116
				eventBus.fireEvent(new LoadOrderListEvent());
117
			}
167 ashish 118
 
119
		}
120
		else 
121
			lPresenter.showError("Who are you man! Have we met before? ");
122
	}
123
 
306 ashish 124
	private void signOut(){
125
 
126
		lPresenter.reset();
127
		switchPresenter(lPresenter);
128
	}
129
 
167 ashish 130
	@Override
131
	public void unbind() {
132
		super.unbind();
133
		if (presenter != null) {
134
			presenter.unbind();
135
		}
136
	}
137
}