/**
* Copyright (c) 2009-2014 Câmara dos Deputados. Todos os direitos reservados.
*
* e-Democracia é um software livre; você pode redistribuí-lo e/ou modificá-lo dentro
* dos termos da Licença Pública Geral Menor GNU como publicada pela Fundação do
* Software Livre (FSF); na versão 2.1 da Licença, ou (na sua opinião) qualquer versão.
*
* Este programa é distribuído na esperança de que possa ser útil, mas SEM NENHUMA GARANTIA;
* sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR.
* Veja a Licença Pública Geral Menor GNU para maiores detalhes.
*/
package br.gov.camara.edemocracia.portlets.ufs;
import java.io.IOException;
import java.util.Date;
import java.util.List;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.GenericPortlet;
import javax.portlet.PortletException;
import javax.portlet.ProcessAction;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import javax.servlet.http.HttpServletRequest;
import com.liferay.counter.service.CounterLocalServiceUtil;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.kernel.util.Validator;
import com.liferay.portal.kernel.util.WebKeys;
import com.liferay.portal.model.Address;
import com.liferay.portal.model.Contact;
import com.liferay.portal.model.User;
import com.liferay.portal.service.AddressLocalServiceUtil;
import com.liferay.portal.service.CountryServiceUtil;
import com.liferay.portal.service.persistence.AddressUtil;
import com.liferay.portal.theme.ThemeDisplay;
import com.liferay.portal.util.PortalUtil;
public class ChooseUFUser extends GenericPortlet {
private static final Log _log = LogFactoryUtil.getLog(ChooseUFUser.class);
@Override
protected void doView(RenderRequest request, RenderResponse response)
throws PortletException, IOException {
ThemeDisplay td = (ThemeDisplay) request
.getAttribute(WebKeys.THEME_DISPLAY);
long companyId = td.getCompanyId();
User user = null;
try {
HttpServletRequest httpReq = PortalUtil
.getOriginalServletRequest(PortalUtil
.getHttpServletRequest(request));
String lastPath = httpReq.getParameter("lp");
if (!Validator.isNull(lastPath)) {
if (lastPath.equals("/") || lastPath.equals("/home"))
lastPath = "/principal";
} else {
lastPath = "/principal";
}
boolean endCompleto = false;
user = td.getRealUser();
Contact c = user.getContact();
List<com.liferay.portal.model.Address> enderecos = AddressLocalServiceUtil
.getAddresses(companyId,
"com.liferay.portal.model.Contact",
c.getContactId());
if (!enderecos.isEmpty()) {
long brasilId = CountryServiceUtil.getCountryByA2("BR").getCountryId();
for (Address address : enderecos) {
if (address.getRegionId() != 0 && address.getCountryId() == brasilId) {
endCompleto = true;
break;
}
}
}
request.setAttribute("endCompleto", endCompleto);
request.setAttribute("lp", lastPath);
} catch (SystemException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (PortalException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
getPortletContext().getRequestDispatcher("/html/view.jsp")
.include(request, response);
}
@ProcessAction(name = "chooseUF")
public void chooseUF(ActionRequest req, ActionResponse rsp) {
ThemeDisplay td = (ThemeDisplay) req
.getAttribute(WebKeys.THEME_DISPLAY);
String lastPath = ParamUtil.get(req, "lp", "/principal");
if (!lastPath.startsWith("/"))
lastPath = "/principal";
// Só faz alteração se for um usuário autenticado
if (!td.getUser().isDefaultUser()) {
long companyId = td.getCompanyId();
Long uf = Long.parseLong(req.getParameter("uf"));
try {
User user = td.getRealUser();
Contact c = user.getContact();
List<com.liferay.portal.model.Address> enderecos = AddressLocalServiceUtil
.getAddresses(companyId,
"com.liferay.portal.model.Contact",
c.getContactId());
long brasilId = CountryServiceUtil.getCountryByA2("BR").getCountryId();
boolean enderecoCompleto = false;
for (Address address : enderecos) {
if (address.getRegionId() == 0) {
address.setRegionId(uf);
address.setAddressId(address.getAddressId());
address = AddressLocalServiceUtil
.updateAddress(address);
enderecoCompleto = true;
break;
}
}
if (!enderecoCompleto) {
com.liferay.portal.model.Address address = AddressUtil
.create(CounterLocalServiceUtil
.increment(com.liferay.portal.model.Address.class
.getName()));
address.setCompanyId(companyId);
address.setCity("-");
address.setStreet1("-");
address.setZip("-");
address.setPrimary(true);
address.setMailing(false);
address.setCountryId(brasilId);
address.setRegionId(uf);
address.setUserId(user.getUserId());
address.setUserName(user.getFullName());
address.setCreateDate(new Date());
address.setModifiedDate(new Date());
address.setTypeId(11000);
address.setClassPK(user.getContactId());
address.setClassNameId(PortalUtil.getClassNameId(Contact.class
.getName()));
address = AddressLocalServiceUtil.addAddress(address);
}
} catch (SystemException e) {
_log.error("Erro ao cadastrar UF");
e.printStackTrace();
} catch (PortalException e) {
_log.error("Erro ao cadastrar UF");
e.printStackTrace();
}
}
try {
rsp.sendRedirect(lastPath);
} catch (IOException e) {
_log.error("Erro ao redirecionar");
e.printStackTrace();
}
}
}