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)); }
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)); }
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); }
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)); }
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); }
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)); }
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)); }