Search in sources :

Example 16 with Offer

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;
}
Also used : Offer(org.olat.resource.accesscontrol.Offer)

Example 17 with Offer

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();
}
Also used : Offer(org.olat.resource.accesscontrol.Offer)

Example 18 with Offer

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);
}
Also used : Offer(org.olat.resource.accesscontrol.Offer) AccessResult(org.olat.resource.accesscontrol.AccessResult) Date(java.util.Date)

Example 19 with Offer

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;
}
Also used : AccessMethod(org.olat.resource.accesscontrol.model.AccessMethod) Offer(org.olat.resource.accesscontrol.Offer) ArrayList(java.util.ArrayList)

Example 20 with Offer

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();
        }
    }
}
Also used : OfferAccess(org.olat.resource.accesscontrol.OfferAccess) OLATResource(org.olat.resource.OLATResource) RepositoryEntry(org.olat.repository.RepositoryEntry) AccessMethod(org.olat.resource.accesscontrol.model.AccessMethod) FreeAccessMethod(org.olat.resource.accesscontrol.model.FreeAccessMethod) Offer(org.olat.resource.accesscontrol.Offer) Identity(org.olat.core.id.Identity) Test(org.junit.Test)

Aggregations

Offer (org.olat.resource.accesscontrol.Offer)38 OfferAccess (org.olat.resource.accesscontrol.OfferAccess)16 AccessMethod (org.olat.resource.accesscontrol.model.AccessMethod)12 Test (org.junit.Test)8 OLATResource (org.olat.resource.OLATResource)8 Date (java.util.Date)6 Identity (org.olat.core.id.Identity)6 AccessMethodHandler (org.olat.resource.accesscontrol.method.AccessMethodHandler)6 CloseableModalController (org.olat.core.gui.control.generic.closablewrapper.CloseableModalController)4 BusinessGroup (org.olat.group.BusinessGroup)4 BusinessGroupQueryParams (org.olat.group.model.BusinessGroupQueryParams)4 OpenBusinessGroupRow (org.olat.group.model.OpenBusinessGroupRow)4 TokenAccessMethod (org.olat.resource.accesscontrol.model.TokenAccessMethod)4 AccessResult (org.olat.resource.accesscontrol.AccessResult)3 ClientActionRequiredException (com.paypal.exception.ClientActionRequiredException)2 HttpErrorException (com.paypal.exception.HttpErrorException)2 InvalidCredentialException (com.paypal.exception.InvalidCredentialException)2 InvalidResponseDataException (com.paypal.exception.InvalidResponseDataException)2 MissingCredentialException (com.paypal.exception.MissingCredentialException)2 SSLConfigurationException (com.paypal.exception.SSLConfigurationException)2