/*
* Copyright (c) 2008-2016 Computer Network Information Center (CNIC), Chinese Academy of Sciences.
*
* This file is part of Duckling project.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package cn.vlabs.umt.services.requests.impl;
import java.util.Collection;
import cn.vlabs.umt.common.mail.MessageSender;
import cn.vlabs.umt.services.requests.RequestDAO;
import cn.vlabs.umt.services.requests.RequestService;
import cn.vlabs.umt.services.requests.UserExist;
import cn.vlabs.umt.services.requests.UserRequest;
import cn.vlabs.umt.services.user.UserService;
import cn.vlabs.umt.services.user.bean.LoginNameInfo;
import cn.vlabs.umt.services.user.bean.User;
import cn.vlabs.umt.services.user.exception.InvalidUserNameException;
import cn.vlabs.umt.ui.UMTContext;
class RequestServiceImpl implements RequestService {
public RequestServiceImpl(RequestDAO rd, MessageSender sender, UserService us){
this.rd=rd;
mails=new RequestMails(sender);
this.us=us;
}
public void approveRequest(int rid,UMTContext context) throws UserExist, InvalidUserNameException {
UserRequest request = rd.getRequest(rid);
if (request!=null && request.getState()==UserRequest.INIT){
if (us.getUserByUmtId(request.getUsername())!=null){
throw new UserExist(request.getUsername());
}
User user = new User();
user.setCstnetId(request.getUsername());
user.setPassword(request.getPassword());
user.setTrueName(request.getTruename());
us.create(user,LoginNameInfo.STATUS_ACTIVE);
rd.updateState(rid, UserRequest.APPROVE, context.getLoginInfo().getUser().getCstnetId());
mails.sendAcceptMail(request, context);
}
}
public int createRequest(UserRequest request, UMTContext context) {
mails.sendRegistUser(request, context);
return rd.createRequest(request);
}
public void denyRequest(int rid, UMTContext context) {
UserRequest request = rd.getRequest(rid);
if (request!=null && request.getState()==UserRequest.INIT){
mails.sendDenyUser(request, context);
rd.updateState(rid, UserRequest.DENY, context.getLoginInfo().getUser().getCstnetId());
}
}
public int getRequestCount(int state) {
if (state==UserRequest.ALL){
return rd.getRequestCount();
}else{
return rd.getRequestCount(state);
}
}
public Collection<UserRequest> getRequests(int state, int start, int count) {
Collection<UserRequest> requests =null;
if (state==UserRequest.ALL){
requests= rd.getRequests(start, count);
}else{
requests= rd.getRequests(state, start, count);
}
if (requests.size()>0){
return requests;
}
else{
return null;
}
}
public void removeRequest(int rid,UMTContext context) {
UserRequest request = rd.getRequest(rid);
if (request!=null && request.getState()==UserRequest.INIT){
//不需要发送通知邮件
rd.updateState(rid, UserRequest.SILENCE_DENY, context.getLoginInfo().getUser().getCstnetId());
}
}
private RequestDAO rd;
private UserService us;
private RequestMails mails;
}