public void OnBeforeSave(ISaveRequestHandler handler) { if (Authorization.HasPermission(PermissionKeys.Tenants)) { return; } if (handler.Row is PaymentsRow || handler.Row is SubscriptionsRow || handler.Row is PaymentsDetailsRow) { return; } var user = (UserDefinition)Authorization.UserDefinition; var tenantFld = TenantRow.Fields; var connection = SqlConnections.NewFor <TenantRow>(); var tenant = connection.First <TenantRow>(tenantFld.TenantId == user.TenantId); if (tenant?.SubscriptionRequired != null && tenant.SubscriptionRequired.Value && UserSubscriptionHelper.GetTenantPaidDays(user.TenantId) < DateTime.Now) { throw new ValidationException(Texts.Site.Subscriptions.Expired.SubscriptionInfoBoxHeader); } }
public SaveResponse Create(IUnitOfWork uow, SaveRequest <MyRow> request) { var maximumInserts = UserSubscriptionHelper.GetTenantMaximumUsers(); if (this.List(uow.Connection, new ListRequest()).TotalCount >= maximumInserts) { throw new ValidationError(string.Format(Texts.Site.Subscriptions.MaximumUsersError, maximumInserts)); } return(new MyRepository().Create(uow, request)); }
public JsonResult GetPayments(int subscriptionId) { var model = new SubscriptionPaymentsModel(); using (var connection = SqlConnections.NewFor <PaymentsRow>()) { if (!connection.ExistsById <SubscriptionsRow>(subscriptionId)) { throw new ValidationError(); } model.SubscriptionPayedPeriod = UserSubscriptionHelper.GetTenantPaidDaysForSubscription(subscriptionId); } return(Json(model)); }
public SaveResponse Create(IUnitOfWork uow, SaveRequest <MyRow> request) { var maximumInserts = UserSubscriptionHelper.GetTenantMaximumVisits(); if (this.List(uow.Connection, new ListRequest()).TotalCount >= maximumInserts) { throw new ValidationError(string.Format(Texts.Site.Subscriptions.MaximumVisitsError, maximumInserts)); } if (request.Entity.FreeForReservation.HasValue && !request.Entity.FreeForReservation.Value) { var patient = uow.Connection.ById <PatientsRow>(request.Entity.PatientId); SendAutomaticEmailToPatient(uow, patient, request.Entity.StartDate ?? DateTime.MinValue, true); } return(new MyRepository().Create(uow, request)); }
public IActionResult GetTenantSubscriptionEndDate() { if (!Authorization.IsLoggedIn) { return(NotFound()); } var user = Authorization.UserDefinition as UserDefinition; var days = UserSubscriptionHelper.GetTenantPaidDays(user.TenantId); if (days <= DateTime.Now.AddDays(7) || Authorization.HasPermission("AdministrationTenants:Payments")) { return(Json(days)); } else { return(Json(DateTime.MinValue)); } }
public SaveResponse Create(IUnitOfWork uow, SaveRequest <MyRow> request) { var maximumInserts = UserSubscriptionHelper.GetTenantMaximumPatients(); if (this.List(uow.Connection, new ListRequest()).TotalCount >= maximumInserts) { throw new ValidationError(string.Format(Texts.Site.Subscriptions.MaximumPatientsError, maximumInserts)); } if (request.Entity.NotifyOnChange ?? true) { if (string.IsNullOrWhiteSpace(request.Entity.Email)) { throw new ValidationError(Texts.Site.ValidationError.ValidateNotifyOnChangeWithNoEmail); } } return(new MyRepository().Create(uow, request)); }