Subversion Repositories SmartDukaan

Rev

Rev 4364 | Rev 4397 | 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;
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;
438 rajveer 30
	private final Provider<AdminPresenter> adminProvider;
167 ashish 31
	private Presenter<? extends org.enunes.gwt.mvp.client.view.Display> presenter;
32
	private final DispatchAsync dispatcher;
33
 
34
	@Inject
35
	public MainPresenterImpl(EventBus eventBus, Display display, LoginDisplayPresenter loginpresenter, 
438 rajveer 36
			Provider<InboxPresenter> inboxProvider, Provider<AdminPresenter> adminPresenter,final DispatchAsync dispatcher ) {
167 ashish 37
		super(eventBus, display);
38
		this.inboxProvider = inboxProvider;
438 rajveer 39
		this.adminProvider = adminPresenter;
167 ashish 40
		lPresenter = loginpresenter;
41
		lPresenter.bind();
42
		this.dispatcher = dispatcher;
43
		display.addContent(loginpresenter.getDisplay());
44
	}
45
 
46
	private void switchPresenter(
47
			Presenter<? extends org.enunes.gwt.mvp.client.view.Display> presenter) {
48
 
49
		if (this.presenter != null) {
50
			this.presenter.unbind();
51
			display.removeContent();
52
		}
53
 
54
		this.presenter = presenter;
55
 
56
		if (presenter != null) {
57
			display.addContent(presenter.getDisplay());
58
			this.presenter.bind();
59
		}
60
 
61
	}
62
 
63
	@Override
64
	public void bind(){
65
		super.bind();
306 ashish 66
		registerHandler(eventBus.addHandler(SignOutEvent.getType(), new SignOutEventHandler() {
67
 
68
			@Override
69
			public void doSignout(SignOutEvent event) {
70
				signOut();
71
			}
72
		}));
73
 
167 ashish 74
		registerHandler(eventBus.addHandler(SubmitLoginInfoEvent.getType(), new SubmitLoginInfoHandler() {
75
 
76
			@Override
77
			public void onSubmitLoginInfo(SubmitLoginInfoEvent event) {
78
 
79
				dispatcher.execute(new AuthRequest(event.getUserName(), event.getPassword()), new  AsyncCallback<AuthResponse>() {
80
 
81
					@Override
82
					public void onFailure(Throwable caught) {
83
						lPresenter.showError("You do not seem in good terms with auth server. It is lost!");
84
					}
85
 
86
					@Override
87
					public void onSuccess(AuthResponse result) {
88
						doAuth(result);
89
					}
90
				});				
91
			}
92
		}));
93
	}
94
 
95
	private void doAuth(AuthResponse result){
96
		if (result.isStatus()){
97
			lPresenter.showError("Welcome! "+ result.getUsername() +", "+ result.getMessage());
98
 
345 ashish 99
			if(result.getNext() == NEXT.INBOX){
100
				final InboxPresenter inboxPresenter = inboxProvider.get();
101
				inboxPresenter.setUsername(result.getUsername());
493 rajveer 102
				inboxPresenter.setWarehouseId(result.getWarehouseId());
2843 chandransh 103
				inboxPresenter.setUserType(result.getUserType());
104
				inboxPresenter.setBillingType(result.getBillingType());
4363 rajveer 105
				inboxPresenter.setVendors(result.getVendors());
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
				}
345 ashish 116
			}
438 rajveer 117
 
345 ashish 118
			if(result.getNext() == NEXT.ADMIN){
119
				final AdminPresenter adminPresenter = adminProvider.get();
120
				adminPresenter.initialize();
121
				switchPresenter(adminPresenter);
122
				//fire event to load adminPresenter
438 rajveer 123
				eventBus.fireEvent(new LoadOrderListEvent());
124
			}
167 ashish 125
 
126
		}
127
		else 
128
			lPresenter.showError("Who are you man! Have we met before? ");
129
	}
130
 
306 ashish 131
	private void signOut(){
132
 
133
		lPresenter.reset();
134
		switchPresenter(lPresenter);
135
	}
136
 
167 ashish 137
	@Override
138
	public void unbind() {
139
		super.unbind();
140
		if (presenter != null) {
141
			presenter.unbind();
142
		}
143
	}
144
}