Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 5
0
        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));
        }