Ejemplo n.º 1
0
        protected override bool CanUpdateEntity(ErrorStack original, Delta <ErrorStack> value)
        {
            // TODO: Only let the client patch certain things.
            ErrorStack entity = value.GetEntity();

            if (value.ContainsChangedProperty(t => t.FirstOccurrence) && original.FirstOccurrence != entity.FirstOccurrence)
            {
                return(false);
            }

            if (value.ContainsChangedProperty(t => t.LastOccurrence) && original.LastOccurrence != entity.LastOccurrence)
            {
                return(false);
            }

            if (value.ContainsChangedProperty(t => t.TotalOccurrences) && original.TotalOccurrences != entity.TotalOccurrences)
            {
                return(false);
            }

            if (value.ContainsChangedProperty(t => t.ProjectId) && !String.Equals(original.ProjectId, entity.ProjectId, StringComparison.OrdinalIgnoreCase))
            {
                return(false);
            }

            if (value.ContainsChangedProperty(t => t.OrganizationId) && !String.Equals(original.OrganizationId, entity.OrganizationId, StringComparison.OrdinalIgnoreCase))
            {
                return(false);
            }

            return(base.CanUpdateEntity(original, value));
        }
Ejemplo n.º 2
0
        protected override bool CanUpdateEntity(Error original, Delta <Error> value)
        {
            // TODO: Only let the client patch certain things.
            Error entity = value.GetEntity();

            if (value.ContainsChangedProperty(t => t.OccurrenceDate) && original.OccurrenceDate != entity.OccurrenceDate)
            {
                return(false);
            }

            if (value.ContainsChangedProperty(t => t.ErrorStackId) && !String.Equals(original.ErrorStackId, entity.ErrorStackId, StringComparison.OrdinalIgnoreCase))
            {
                return(false);
            }

            return(base.CanUpdateEntity(original, value));
        }
Ejemplo n.º 3
0
        protected override ErrorStack UpdateEntity(ErrorStack original, Delta <ErrorStack> value)
        {
            ErrorStack entity = value.GetEntity();

            bool updateFixedInformation = (value.ContainsChangedProperty(t => t.DateFixed) && original.DateFixed != entity.DateFixed) ||
                                          (value.ContainsChangedProperty(t => t.FixedInVersion) && original.FixedInVersion != entity.FixedInVersion);

            bool visibilityChanged = (value.ContainsChangedProperty(t => t.IsHidden) && original.IsHidden != entity.IsHidden);

            value.Patch(original);

            if (updateFixedInformation)
            {
                // TODO: Implement Fixed in version.
                if (original.DateFixed.HasValue)
                {
                    original.DateFixed = DateTime.UtcNow;
                    //original.FixedInVersion = "TODO";
                    original.IsRegressed = false;
                }
                else
                {
                    //original.FixedInVersion = null;
                }
            }

            ErrorStack stack = _repository.Update(original);

            if (visibilityChanged)
            {
                _repository.InvalidateHiddenIdsCache(original.ProjectId);
            }

            if (updateFixedInformation)
            {
                _repository.InvalidateFixedIdsCache(original.ProjectId);
            }

            // notify client that the error stack has been updated.
            _notificationSender.StackUpdated(stack.OrganizationId, stack.ProjectId, stack.Id);

            return(stack);
        }
Ejemplo n.º 4
0
        protected override PermissionResult CanUpdate(Project original, Delta <UpdateProject> changes)
        {
            var changed = changes.GetEntity();

            if (changes.ContainsChangedProperty(p => p.Name) && !IsProjectNameAvailableInternal(original.OrganizationId, changed.Name))
            {
                return(PermissionResult.DenyWithMessage("A project with this name already exists."));
            }

            return(base.CanUpdate(original, changes));
        }
Ejemplo n.º 5
0
        protected override Organization UpdateEntity(Organization original, Delta <Organization> value)
        {
            if (String.IsNullOrWhiteSpace(original.Id) || !User.CanAccessOrganization(original.Id))
            {
                throw new HttpResponseException(BadRequestErrorResponseMessage());
            }

            Organization organization          = value.GetEntity();
            bool         suspendedStateChanged = (value.ContainsChangedProperty(t => t.IsSuspended) && original.IsSuspended != organization.IsSuspended) ||
                                                 (value.ContainsChangedProperty(t => t.SuspensionCode) && original.SuspensionCode != organization.SuspensionCode) ||
                                                 (value.ContainsChangedProperty(t => t.SuspensionNotes) && original.SuspensionNotes != organization.SuspensionNotes);

            value.Patch(original);

            if (suspendedStateChanged)
            {
                if (original.IsSuspended)
                {
                    original.SuspensionDate    = DateTime.Now;
                    original.SuspendedByUserId = User.UserEntity != null ? User.UserEntity.Id : null;
                    if (!String.Equals(original.SuspensionCode, SuspensionCodes.Abuse) && !String.Equals(original.SuspensionCode, SuspensionCodes.Billing) && !String.Equals(original.SuspensionCode, SuspensionCodes.Overage))
                    {
                        original.SuspensionCode = SuspensionCodes.Other;
                    }
                }
                else
                {
                    original.SuspensionDate    = null;
                    original.SuspensionCode    = null;
                    original.SuspensionNotes   = null;
                    original.SuspendedByUserId = null;
                }
            }

            organization = _repository.Update(original);
            _notificationSender.OrganizationUpdated(organization.Id);

            return(organization);
        }
Ejemplo n.º 6
0
        protected override bool CanUpdateEntity(Project original, Delta <Project> value)
        {
            Project entity = value.GetEntity();

            if (value.ContainsChangedProperty(t => t.Name) &&
                !String.IsNullOrEmpty(entity.Name) &&
                !String.Equals(original.Name, entity.Name, StringComparison.OrdinalIgnoreCase) &&
                base.Get().Count(p => String.Equals(p.Name, entity.Name, StringComparison.OrdinalIgnoreCase)) > 0)
            {
                return(false);
            }

            if (value.ContainsChangedProperty(t => t.ApiKeys))
            {
                // If the new patch value contains any api keys that are not in the original api key list then return false.
                if (entity.ApiKeys.Any(key => !original.ApiKeys.Contains(key)))
                {
                    return(false);
                }

                if (entity.ApiKeys.Any(key => _repository.GetByApiKey(key) != null))
                {
                    return(false);
                }
            }

            if ((value.ContainsChangedProperty(t => t.StackCount) && original.StackCount != entity.StackCount) ||
                (value.ContainsChangedProperty(t => t.ErrorCount) && original.ErrorCount != entity.ErrorCount) ||
                (value.ContainsChangedProperty(t => t.TotalErrorCount) && original.TotalErrorCount != entity.TotalErrorCount))
            {
                return(false);
            }

            //if (value.ContainsChangedProperty(t => t.Configuration))
            //    return false;

            return(base.CanUpdateEntity(original, value));
        }
Ejemplo n.º 7
0
        protected override bool CanUpdateEntity(Organization original, Delta <Organization> value)
        {
            Organization organization = value.GetEntity();

            if (value.ContainsChangedProperty(t => t.Id) &&
                !String.Equals(original.Id, organization.Id, StringComparison.OrdinalIgnoreCase))
            {
                return(false);
            }

            if (value.ContainsChangedProperty(t => t.Name) &&
                !String.Equals(original.Name, organization.Name, StringComparison.OrdinalIgnoreCase) &&
                !IsNameAvailable(organization.Name))
            {
                return(false);
            }

            if ((value.ContainsChangedProperty(t => t.MaxErrorsPerDay) && original.MaxErrorsPerDay != organization.MaxErrorsPerDay) ||
                (value.ContainsChangedProperty(t => t.LastErrorDate) && original.LastErrorDate != organization.LastErrorDate) ||
                (value.ContainsChangedProperty(t => t.StripeCustomerId) && original.StripeCustomerId != organization.StripeCustomerId) ||
                (value.ContainsChangedProperty(t => t.PlanId) && original.PlanId != organization.PlanId) ||
                (value.ContainsChangedProperty(t => t.CardLast4) && original.CardLast4 != organization.CardLast4) ||
                (value.ContainsChangedProperty(t => t.SubscribeDate) && original.SubscribeDate != organization.SubscribeDate) ||
                (value.ContainsChangedProperty(t => t.BillingChangeDate) && original.BillingChangeDate != organization.BillingChangeDate) ||
                (value.ContainsChangedProperty(t => t.RetentionDays) && original.RetentionDays != organization.RetentionDays) ||
                (value.ContainsChangedProperty(t => t.MaxErrorsPerDay) && original.MaxErrorsPerDay != organization.MaxErrorsPerDay) ||
                (value.ContainsChangedProperty(t => t.MaxProjects) && original.MaxProjects != organization.MaxProjects) ||
                (value.ContainsChangedProperty(t => t.ProjectCount) && original.ProjectCount != organization.ProjectCount) ||
                (value.ContainsChangedProperty(t => t.StackCount) && original.StackCount != organization.StackCount) ||
                (value.ContainsChangedProperty(t => t.ErrorCount) && original.ErrorCount != organization.ErrorCount) ||
                (value.ContainsChangedProperty(t => t.TotalErrorCount) && original.TotalErrorCount != organization.TotalErrorCount) ||
                (value.ContainsChangedProperty(t => t.SuspensionDate) && original.SuspensionDate != organization.SuspensionDate) ||
                (value.ContainsChangedProperty(t => t.SuspendedByUserId) && original.SuspendedByUserId != organization.SuspendedByUserId))
            {
                return(false);
            }

            if (!User.IsInRole(AuthorizationRoles.GlobalAdmin) &&
                ((value.ContainsChangedProperty(t => t.IsSuspended) && original.IsSuspended != organization.IsSuspended) ||
                 (value.ContainsChangedProperty(t => t.SuspensionCode) && original.SuspensionCode != organization.SuspensionCode) ||
                 (value.ContainsChangedProperty(t => t.SuspensionNotes) && original.SuspensionNotes != organization.SuspensionNotes)))
            {
                return(false);
            }

            return(base.CanUpdateEntity(original, value));
        }