Subversion Repositories SmartDukaan

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

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