Subversion Repositories SmartDukaan

Rev

Rev 5455 | Rev 8303 | 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
 
4397 rajveer 3
import in.shop2020.hotspot.dashbaord.client.event.LoadAlertsEvent;
4364 rajveer 4
import in.shop2020.hotspot.dashbaord.client.event.LoadOrderCountsEvent;
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;
4364 rajveer 14
import in.shop2020.hotspot.dashbaord.shared.actions.OrderType;
167 ashish 15
 
16
import net.customware.gwt.dispatch.client.DispatchAsync;
17
 
18
import org.enunes.gwt.mvp.client.EventBus;
19
import org.enunes.gwt.mvp.client.presenter.BasePresenter;
20
import org.enunes.gwt.mvp.client.presenter.Presenter;
21
 
22
import com.google.gwt.user.client.rpc.AsyncCallback;
23
import com.google.inject.Inject;
24
import com.google.inject.Provider;
25
 
26
public class MainPresenterImpl extends BasePresenter<MainPresenter.Display> implements MainPresenter{
27
 
28
	private final Provider<InboxPresenter> inboxProvider;
29
	private final LoginDisplayPresenter lPresenter;
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, 
5455 rajveer 35
			Provider<InboxPresenter> inboxProvider, final DispatchAsync dispatcher ) {
167 ashish 36
		super(eventBus, display);
37
		this.inboxProvider = inboxProvider;
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());
2843 chandransh 101
				inboxPresenter.setUserType(result.getUserType());
102
				inboxPresenter.setBillingType(result.getBillingType());
5110 mandeep.dh 103
				inboxPresenter.setWarehouses(result.getWarehouses());
4606 rajveer 104
				inboxPresenter.setProviders(result.getProviders());
5769 rajveer 105
				inboxPresenter.setStores(result.getStores());
2449 chandransh 106
				inboxPresenter.initialize();
107
 
345 ashish 108
				//inboxPresenter.refreshOrderList();
109
 
110
				inboxPresenter.getDisplay().changeGreeting(result.getUsername());
111
				switchPresenter(inboxPresenter);
112
				eventBus.fireEvent(new LoadOrderListEvent());
4366 rajveer 113
				for(OrderType orderType: OrderType.values()){
114
					eventBus.fireEvent(new LoadOrderCountsEvent(orderType));
115
				}
4446 rajveer 116
				eventBus.fireEvent(new LoadAlertsEvent(true, false, 1));
345 ashish 117
			}
438 rajveer 118
 
167 ashish 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
}