1
22
23 package com.liferay.portal.service.impl;
24
25 import com.liferay.portal.PortalException;
26 import com.liferay.portal.SystemException;
27 import com.liferay.portal.kernel.util.Validator;
28 import com.liferay.portal.model.Address;
29 import com.liferay.portal.model.EmailAddress;
30 import com.liferay.portal.model.OrgLabor;
31 import com.liferay.portal.model.Organization;
32 import com.liferay.portal.model.Phone;
33 import com.liferay.portal.model.Website;
34 import com.liferay.portal.security.auth.PrincipalException;
35 import com.liferay.portal.security.permission.ActionKeys;
36 import com.liferay.portal.security.permission.PermissionChecker;
37 import com.liferay.portal.service.ServiceContext;
38 import com.liferay.portal.service.base.OrganizationServiceBaseImpl;
39 import com.liferay.portal.service.permission.GroupPermissionUtil;
40 import com.liferay.portal.service.permission.OrganizationPermissionUtil;
41 import com.liferay.portal.service.permission.PasswordPolicyPermissionUtil;
42 import com.liferay.portal.service.permission.PortalPermissionUtil;
43 import com.liferay.portal.util.PropsValues;
44 import com.liferay.portlet.enterpriseadmin.util.EnterpriseAdminUtil;
45 import com.liferay.util.UniqueList;
46
47 import java.util.List;
48
49
57 public class OrganizationServiceImpl extends OrganizationServiceBaseImpl {
58
59 public void addGroupOrganizations(long groupId, long[] organizationIds)
60 throws PortalException, SystemException {
61
62 GroupPermissionUtil.check(
63 getPermissionChecker(), groupId, ActionKeys.ASSIGN_MEMBERS);
64
65 organizationLocalService.addGroupOrganizations(
66 groupId, organizationIds);
67 }
68
69 public void addPasswordPolicyOrganizations(
70 long passwordPolicyId, long[] organizationIds)
71 throws PortalException, SystemException {
72
73 PasswordPolicyPermissionUtil.check(
74 getPermissionChecker(), passwordPolicyId, ActionKeys.UPDATE);
75
76 organizationLocalService.addPasswordPolicyOrganizations(
77 passwordPolicyId, organizationIds);
78 }
79
80 public Organization addOrganization(
81 long parentOrganizationId, String name, String type,
82 boolean recursable, long regionId, long countryId, int statusId,
83 String comments, ServiceContext serviceContext)
84 throws PortalException, SystemException {
85
86 if (!OrganizationPermissionUtil.contains(
87 getPermissionChecker(), parentOrganizationId,
88 ActionKeys.MANAGE_SUBORGANIZATIONS) &&
89 !PortalPermissionUtil.contains(
90 getPermissionChecker(), ActionKeys.ADD_ORGANIZATION)) {
91
92 throw new PrincipalException(
93 "User " + getUserId() + " does not have permissions to add " +
94 "an organization with parent " + parentOrganizationId);
95 }
96
97 return organizationLocalService.addOrganization(
98 getUserId(), parentOrganizationId, name, type, recursable,
99 regionId, countryId, statusId, comments, serviceContext);
100 }
101
102 public Organization addOrganization(
103 long parentOrganizationId, String name, String type,
104 boolean recursable, long regionId, long countryId, int statusId,
105 String comments, List<Address> addresses,
106 List<EmailAddress> emailAddresses, List<OrgLabor> orgLabors,
107 List<Phone> phones, List<Website> websites,
108 ServiceContext serviceContext)
109 throws PortalException, SystemException {
110
111 Organization organization = addOrganization(
112 parentOrganizationId, name, type, recursable, regionId, countryId,
113 statusId, comments, serviceContext);
114
115 EnterpriseAdminUtil.updateAddresses(
116 Organization.class.getName(), organization.getOrganizationId(),
117 addresses);
118
119 EnterpriseAdminUtil.updateEmailAddresses(
120 Organization.class.getName(), organization.getOrganizationId(),
121 emailAddresses);
122
123 EnterpriseAdminUtil.updateOrgLabors(organization.getOrganizationId(),
124 orgLabors);
125
126 EnterpriseAdminUtil.updatePhones(
127 Organization.class.getName(), organization.getOrganizationId(),
128 phones);
129
130 EnterpriseAdminUtil.updateWebsites(
131 Organization.class.getName(), organization.getOrganizationId(),
132 websites);
133
134 return organization;
135 }
136
137 public void deleteLogo(long organizationId)
138 throws PortalException, SystemException {
139
140 OrganizationPermissionUtil.check(
141 getPermissionChecker(), organizationId, ActionKeys.UPDATE);
142
143 organizationLocalService.deleteLogo(organizationId);
144 }
145
146 public void deleteOrganization(long organizationId)
147 throws PortalException, SystemException {
148
149 OrganizationPermissionUtil.check(
150 getPermissionChecker(), organizationId, ActionKeys.DELETE);
151
152 organizationLocalService.deleteOrganization(organizationId);
153 }
154
155 public List<Organization> getManageableOrganizations(
156 long userId, String actionId)
157 throws PortalException, SystemException {
158
159 return getManageableOrganizations(userId, actionId, true);
160 }
161
162 public List<Organization> getManageableOrganizations(
163 long userId, String actionId, boolean recurse)
164 throws PortalException, SystemException {
165
166 PermissionChecker permissionChecker = getPermissionChecker();
167
168 if (permissionChecker.isCompanyAdmin()) {
169 return organizationLocalService.search(
170 permissionChecker.getCompanyId(), 0, null, null, null, null,
171 null, 0,
172 PropsValues.CONTROL_PANEL_NAVIGATION_MAX_ORGANIZATIONS);
173 }
174
175 if (Validator.isNull(actionId)) {
176 return organizationLocalService.getManageableOrganizations(userId);
177 }
178
179 List<Organization> manageableOrganizations =
180 new UniqueList<Organization>();
181
182 List<Organization> userOrganizations = userPersistence.getOrganizations(
183 userId);
184
185 for (Organization userOrganization : userOrganizations) {
186 if (OrganizationPermissionUtil.contains(
187 permissionChecker, userOrganization.getOrganizationId(),
188 actionId)) {
189
190 manageableOrganizations.add(userOrganization);
191 }
192
193 if (recurse && OrganizationPermissionUtil.contains(
194 permissionChecker, userOrganization.getOrganizationId(),
195 ActionKeys.MANAGE_SUBORGANIZATIONS)) {
196
197 manageableOrganizations.addAll(
198 userOrganization.getSuborganizations());
199 }
200 }
201
202 return manageableOrganizations;
203 }
204
205 public Organization getOrganization(long organizationId)
206 throws PortalException, SystemException {
207
208 OrganizationPermissionUtil.check(
209 getPermissionChecker(), organizationId, ActionKeys.VIEW);
210
211 return organizationLocalService.getOrganization(organizationId);
212 }
213
214 public long getOrganizationId(long companyId, String name)
215 throws SystemException {
216
217 return organizationLocalService.getOrganizationId(companyId, name);
218 }
219
220 public List<Organization> getUserOrganizations(long userId)
221 throws SystemException {
222
223 return organizationLocalService.getUserOrganizations(userId);
224 }
225
226 public void setGroupOrganizations(long groupId, long[] organizationIds)
227 throws PortalException, SystemException {
228
229 GroupPermissionUtil.check(
230 getPermissionChecker(), groupId, ActionKeys.ASSIGN_MEMBERS);
231
232 organizationLocalService.setGroupOrganizations(
233 groupId, organizationIds);
234 }
235
236 public void unsetGroupOrganizations(long groupId, long[] organizationIds)
237 throws PortalException, SystemException {
238
239 GroupPermissionUtil.check(
240 getPermissionChecker(), groupId, ActionKeys.ASSIGN_MEMBERS);
241
242 organizationLocalService.unsetGroupOrganizations(
243 groupId, organizationIds);
244 }
245
246 public void unsetPasswordPolicyOrganizations(
247 long passwordPolicyId, long[] organizationIds)
248 throws PortalException, SystemException {
249
250 PasswordPolicyPermissionUtil.check(
251 getPermissionChecker(), passwordPolicyId, ActionKeys.UPDATE);
252
253 organizationLocalService.unsetPasswordPolicyOrganizations(
254 passwordPolicyId, organizationIds);
255 }
256
257 public Organization updateOrganization(
258 long organizationId, long parentOrganizationId, String name,
259 String type, boolean recursable, long regionId, long countryId,
260 int statusId, String comments, ServiceContext serviceContext)
261 throws PortalException, SystemException {
262
263 OrganizationPermissionUtil.check(
264 getPermissionChecker(), organizationId, ActionKeys.UPDATE);
265
266 return organizationLocalService.updateOrganization(
267 getUser().getCompanyId(), organizationId, parentOrganizationId,
268 name, type, recursable, regionId, countryId, statusId, comments,
269 serviceContext);
270 }
271
272 public Organization updateOrganization(
273 long organizationId, long parentOrganizationId, String name,
274 String type, boolean recursable, long regionId, long countryId,
275 int statusId, String comments, List<Address> addresses,
276 List<EmailAddress> emailAddresses, List<OrgLabor> orgLabors,
277 List<Phone> phones, List<Website> websites,
278 ServiceContext serviceContext)
279 throws PortalException, SystemException {
280
281 Organization organization = updateOrganization(
282 organizationId, parentOrganizationId, name, type, recursable,
283 regionId, countryId, statusId, comments, serviceContext);
284
285 EnterpriseAdminUtil.updateAddresses(
286 Organization.class.getName(), organizationId, addresses);
287
288 EnterpriseAdminUtil.updateEmailAddresses(
289 Organization.class.getName(), organizationId, emailAddresses);
290
291 EnterpriseAdminUtil.updateOrgLabors(organizationId, orgLabors);
292
293 EnterpriseAdminUtil.updatePhones(
294 Organization.class.getName(), organizationId, phones);
295
296 EnterpriseAdminUtil.updateWebsites(
297 Organization.class.getName(), organizationId, websites);
298
299 return organization;
300 }
301
302 }