Subversion Repositories SmartDukaan

Rev

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