Subversion Repositories SmartDukaan

Rev

Rev 4446 | Rev 5110 | 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());
4606 rajveer 107
				inboxPresenter.setProviders(result.getProviders());
2449 chandransh 108
				inboxPresenter.initialize();
109
 
345 ashish 110
				//inboxPresenter.refreshOrderList();
111
 
112
				inboxPresenter.getDisplay().changeGreeting(result.getUsername());
113
				switchPresenter(inboxPresenter);
114
				eventBus.fireEvent(new LoadOrderListEvent());
4366 rajveer 115
				for(OrderType orderType: OrderType.values()){
116
					eventBus.fireEvent(new LoadOrderCountsEvent(orderType));
117
				}
4446 rajveer 118
				eventBus.fireEvent(new LoadAlertsEvent(true, false, 1));
345 ashish 119
			}
438 rajveer 120
 
345 ashish 121
			if(result.getNext() == NEXT.ADMIN){
122
				final AdminPresenter adminPresenter = adminProvider.get();
123
				adminPresenter.initialize();
124
				switchPresenter(adminPresenter);
125
				//fire event to load adminPresenter
438 rajveer 126
				eventBus.fireEvent(new LoadOrderListEvent());
127
			}
167 ashish 128
 
129
		}
130
		else 
131
			lPresenter.showError("Who are you man! Have we met before? ");
132
	}
133
 
306 ashish 134
	private void signOut(){
135
 
136
		lPresenter.reset();
137
		switchPresenter(lPresenter);
138
	}
139
 
167 ashish 140
	@Override
141
	public void unbind() {
142
		super.unbind();
143
		if (presenter != null) {
144
			presenter.unbind();
145
		}
146
	}
147
}