public bool CanWriteSegment(int segmentId)
        {
            if (CanAccessEverything())
            {
                return(true);
            }

            var segment = _container.Resolve <IRepositoryAsync <Segment> >().Queryable().FirstOrDefault(x => x.SegmentId == segmentId);

            if (segment == null)
            {
                return(true);
            }

            var canWrite = AuthorizationServiceExtensions.CanWriteSegment(this, segment.RtbSegmentId); // note: this is an extension authorization

            if (!canWrite && segment.AdvertiserId.HasValue)
            {
                var advertiserUuid = _container.Resolve <IRepositoryAsync <Advertiser> >().Find(segment.AdvertiserId.Value).AdvertiserUuid;
                canWrite = CanWriteAdvertiser(advertiserUuid);
            }
            if (!canWrite && segment.BuyerAccountId.HasValue)
            {
                var buyerAccountUuid = _container.Resolve <IRepositoryAsync <BuyerAccount> >().Find(segment.BuyerAccountId.Value).BuyerAccountUuid;
                canWrite = CanWriteBuyerAccount(buyerAccountUuid);
            }
            return(canWrite);
        }
        public bool CanWriteDoohPanelLocation(int doohPanelLocationId)
        {
            if (CanAccessEverything())
            {
                return(true);
            }

            var doohPanelLocation = _container.Resolve <IRepositoryAsync <DoohPanelLocation> >().Find(doohPanelLocationId);

            if (doohPanelLocation == null)
            {
                return(true);
            }

            return(AuthorizationServiceExtensions.CanWriteDoohPanelLocation(this, doohPanelLocation.PartnerId)); // note: this is an extension authorization
        }