use of org.olat.resource.accesscontrol.Offer in project OpenOLAT by OpenOLAT.
the class FreeAccessConfigurationController method commitChanges.
@Override
public OfferAccess commitChanges() {
Offer offer = link.getOffer();
offer.setDescription(descEl.getValue());
offer.setValidFrom(dateFrom.getDate());
offer.setValidTo(dateTo.getDate());
offer.setAutoBooking(autoEl.isAtLeastSelected(1));
link.setValidFrom(dateFrom.getDate());
link.setValidTo(dateTo.getDate());
return link;
}
use of org.olat.resource.accesscontrol.Offer in project OpenOLAT by OpenOLAT.
the class AccessConfigurationController method setConfirmationEmail.
private void setConfirmationEmail(boolean confirmationEmail) {
for (AccessInfo info : confControllers) {
Offer offer = info.getLink().getOffer();
offer.setConfirmationEmail(confirmationEmail);
offer = acService.save(offer);
}
// make sure all is on the dabatase
dbInstance.commit();
confControllers.clear();
loadConfigurations();
}
use of org.olat.resource.accesscontrol.Offer in project OpenOLAT by OpenOLAT.
the class ACFrontendManager method isAccessible.
/**
* The rule to access the repository entry:<br/>
* -No offer, access is free<br/>
* -Owners have always access to the resource<br/>
* -Tutors have access to the resource<br/>
* -Participants have access to the resource<br/>
* @param entry
* @param forId
* @param knowMember give it if already know as a member
* @return
*/
@Override
public AccessResult isAccessible(RepositoryEntry entry, Identity forId, Boolean knowMember, boolean allowNonInteractiveAccess) {
if (!accessModule.isEnabled()) {
return new AccessResult(true);
}
boolean member;
if (knowMember == null) {
member = repositoryService.isMember(forId, entry);
} else {
member = knowMember.booleanValue();
}
if (member) {
return new AccessResult(true);
}
Date now = dateNow();
List<Offer> offers = accessManager.findOfferByResource(entry.getOlatResource(), true, now);
if (offers.isEmpty()) {
if (methodManager.isValidMethodAvailable(entry.getOlatResource(), null)) {
// not open for the moment: no valid offer at this date but some methods are defined
return new AccessResult(false);
} else {
return new AccessResult(true);
}
}
return isAccessible(forId, offers, allowNonInteractiveAccess);
}
use of org.olat.resource.accesscontrol.Offer in project OpenOLAT by OpenOLAT.
the class ACOfferDAO method findOfferByResource.
public List<Offer> findOfferByResource(OLATResource resource, boolean valid, Date atDate) {
StringBuilder sb = new StringBuilder();
sb.append("select offer, access.method from acofferaccess access ").append(" inner join access.offer offer").append(" left join offer.resource resource").append(" where resource.key=:resourceKey").append(" and offer.valid=").append(valid);
if (atDate != null) {
sb.append(" and (offer.validFrom is null or offer.validFrom<=:atDate)").append(" and (offer.validTo is null or offer.validTo>=:atDate)");
}
TypedQuery<Object[]> query = dbInstance.getCurrentEntityManager().createQuery(sb.toString(), Object[].class).setParameter("resourceKey", resource.getKey());
if (atDate != null) {
query.setParameter("atDate", atDate, TemporalType.TIMESTAMP);
}
List<Object[]> loadedObjects = query.getResultList();
List<Offer> offers = new ArrayList<>();
for (Object[] objects : loadedObjects) {
Offer offer = (Offer) objects[0];
AccessMethod method = (AccessMethod) objects[1];
if (method.isVisibleInGui()) {
offers.add(offer);
}
}
return offers;
}
use of org.olat.resource.accesscontrol.Offer in project OpenOLAT by OpenOLAT.
the class AccessTransactionTest method generateDatas.
@Test
public void generateDatas() {
// pick up a method
List<AccessMethod> methods = acMethodManager.getAvailableMethodsByType(FreeAccessMethod.class);
AccessMethod method = methods.get(0);
StringBuilder sb = new StringBuilder();
sb.append("select v from repositoryentry as v ").append(" inner join fetch v.olatResource as ores").append(" inner join fetch v.statistics as statistics").append(" left join fetch v.lifecycle as lifecycle").append(" where ores.resName='CourseModule' and v.access>0");
List<RepositoryEntry> courses = dbInstance.getCurrentEntityManager().createQuery(sb.toString(), RepositoryEntry.class).getResultList();
List<Identity> loadIdentities = securityManager.getVisibleIdentitiesByPowerSearch(null, null, false, null, null, null, null, null, 0, 40000);
for (RepositoryEntry course : courses) {
try {
List<Offer> offers = acService.findOfferByResource(course.getOlatResource(), true, null);
if (offers.isEmpty()) {
OLATResource randomOres = course.getOlatResource();
Offer offer = acService.createOffer(randomOres, "Free " + course.getDisplayname());
offer.setAutoBooking(true);
OfferAccess link = acService.createOfferAccess(offer, method);
offer = acService.save(offer);
acService.saveOfferAccess(link);
dbInstance.commit();
int fromIndex = (int) (Math.random() * loadIdentities.size() - 1);
int length = (int) (Math.random() * 200);
int toIndex = Math.min(loadIdentities.size() - 1, fromIndex + length);
List<Identity> identities = loadIdentities.subList(fromIndex, toIndex);
for (Identity identity : identities) {
acService.isAccessible(course, identity, false, true);
dbInstance.commit();
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
dbInstance.commitAndCloseSession();
}
}
}
Aggregations