public IActionResult GetTariff(string portalName)
        {
            if (string.IsNullOrEmpty(portalName))
            {
                return(BadRequest(new
                {
                    errors = "portalName is required."
                }));
            }

            var tenant = HostedSolution.GetTenant(portalName.Trim());

            if (tenant == null)
            {
                return(BadRequest(new
                {
                    errors = "Tenant not found."
                }));
            }

            var tariff = HostedSolution.GetTariff(tenant.TenantId, false);

            var quota = HostedSolution.GetTenantQuota(tenant.TenantId);

            return(Ok(new
            {
                errors = "",
                tenant = ToTenantWrapper(tenant),
                tariff = ToTariffWrapper(tariff, quota)
            }));
        }
        public IActionResult ChangeStatus(TenantModel model, bool active)
        {
            if (model == null)
            {
                return(BadRequest(new
                {
                    errors = "PortalName is required."
                }));
            }

            var tenant = HostedSolution.GetTenant((model.PortalName ?? "").Trim());

            if (tenant == null)
            {
                return(BadRequest(new
                {
                    errors = "Tenant not found."
                }));
            }

            tenant.SetStatus(active ? TenantStatus.Active : TenantStatus.Suspended);

            HostedSolution.SaveTenant(tenant);

            return(Ok(new
            {
                errors = "",
                tenant = ToTenantWrapper(tenant)
            }));
        }
        public IActionResult Remove(string portalName)
        {
            if (string.IsNullOrEmpty(portalName))
            {
                return(BadRequest(new
                {
                    errors = "portalName is required."
                }));
            }

            var tenant = HostedSolution.GetTenant(portalName.Trim());

            if (tenant == null)
            {
                return(BadRequest(new
                {
                    errors = "Tenant not found."
                }));
            }

            HostedSolution.RemoveTenant(tenant);

            return(Ok(new
            {
                errors = "",
                tenant = ToTenantWrapper(tenant)
            }));
        }
示例#4
0
        private string GetTenantDomain(int tenantId)
        {
            var domain = Cache.Get <string>(tenantId.ToString());

            if (string.IsNullOrEmpty(domain))
            {
                var tenant = HostedSolution.GetTenant(tenantId);
                domain = tenant.GetTenantDomain(CoreSettings);
                Cache.Insert(tenantId.ToString(), domain, TimeSpan.FromMinutes(10));
            }
            return(domain);
        }
示例#5
0
        public bool GetTenant(IModel model, out Tenant tenant)
        {
            if (model != null && model.TenantId.HasValue)
            {
                tenant = HostedSolution.GetTenant(model.TenantId.Value);
                return(true);
            }

            if (model != null && !string.IsNullOrEmpty((model.PortalName ?? "").Trim()))
            {
                tenant = HostedSolution.GetTenant((model.PortalName ?? "").Trim());
                return(true);
            }

            tenant = null;
            return(false);
        }
        public IActionResult SetTariff(TariffModel model)
        {
            if (model == null)
            {
                return(BadRequest(new
                {
                    errors = "PortalName is required."
                }));
            }

            if (!ModelState.IsValid)
            {
                var errors = new JArray();

                foreach (var k in ModelState.Keys)
                {
                    errors.Add(ModelState[k].Errors.FirstOrDefault().ErrorMessage);
                }

                return(BadRequest(new
                {
                    errors
                }));
            }

            var tenant = HostedSolution.GetTenant((model.PortalName ?? "").Trim());

            if (tenant == null)
            {
                return(BadRequest(new
                {
                    errors = "Tenant not found."
                }));
            }

            var quota = new TenantQuota(tenant.TenantId)
            {
                ActiveUsers  = 10000,
                Features     = model.Features ?? "",
                MaxFileSize  = 1024 * 1024 * 1024,
                MaxTotalSize = 1024L * 1024 * 1024 * 1024 - 1,
                Name         = "api",
            };

            if (model.ActiveUsers != default)
            {
                quota.ActiveUsers = model.ActiveUsers;
            }

            if (model.MaxTotalSize != default)
            {
                quota.MaxTotalSize = model.MaxTotalSize;
            }

            if (model.MaxFileSize != default)
            {
                quota.MaxFileSize = model.MaxFileSize;
            }

            HostedSolution.SaveTenantQuota(quota);

            var tariff = new Tariff
            {
                QuotaId = quota.Id,
                DueDate = model.DueDate != default ? model.DueDate : DateTime.MaxValue,
            };

            HostedSolution.SetTariff(tenant.TenantId, tariff);

            tariff = HostedSolution.GetTariff(tenant.TenantId, false);

            quota = HostedSolution.GetTenantQuota(tenant.TenantId);

            return(Ok(new
            {
                errors = "",
                tenant = ToTenantWrapper(tenant),
                tariff = ToTariffWrapper(tariff, quota)
            }));
        }
示例#7
0
        public IActionResult GetPortals([FromQuery] TenantModel model)
        {
            try
            {
                var tenants = new List<Tenant>();
                var empty = true;

                if (!string.IsNullOrEmpty((model.Email ?? "").Trim()))
                {
                    empty = false;
                    tenants.AddRange(HostedSolution.FindTenants((model.Email ?? "").Trim()));
                }

                if (!string.IsNullOrEmpty((model.PortalName ?? "").Trim()))
                {
                    empty = false;
                    var tenant = HostedSolution.GetTenant((model.PortalName ?? "").Trim());

                    if (tenant != null)
                    {
                        tenants.Add(tenant);
                    }
                }

                if (model.TenantId.HasValue)
                {
                    empty = false;
                    var tenant = HostedSolution.GetTenant(model.TenantId.Value);

                    if (tenant != null)
                    {
                        tenants.Add(tenant);
                    }
                }

                if (empty)
                {
                    tenants.AddRange(HostedSolution.GetTenants(DateTime.MinValue).OrderBy(t => t.TenantId).ToList());
                }

                var tenantsWrapper = tenants
                    .Distinct()
                    .Where(t => t.Status == TenantStatus.Active)
                    .OrderBy(t => t.TenantId)
                    .Select(CommonMethods.ToTenantWrapper);

                return Ok(new
                {
                    tenants = tenantsWrapper
                });
            }
            catch (Exception ex)
            {
                Log.Error(ex);

                return StatusCode(StatusCodes.Status500InternalServerError, new
                {
                    error = "error",
                    message = ex.Message,
                    stacktrace = ex.StackTrace
                });
            }
        }