private async Task <DeleteResult> CheckPermission(GeoTask entity,
                                                          Actor currentActor, Project project, bool hardMode)
        {
            ActorRole currentActorProjectRole = null;

            if (project != null && currentActor != null)
            {
                project.ProjectActorRoles.TryGetValue(currentActor.Id,
                                                      out currentActorProjectRole);
            }
            var checkModel = new CheckDeletePermissionModel <GeoTask>
            {
                Entity           = entity,
                Actor            = currentActor,
                ProjectActorRole = currentActorProjectRole,
                HardMode         = hardMode
            };
            var validator       = new GeoTaskDeletePermissionValidator();
            var validatorResult = await validator.ValidateAsync(checkModel)
                                  .ConfigureAwait(false);

            if (!validatorResult.IsValid)
            {
                return(ErrorResult(validatorResult.Errors
                                   .Select(x => x.ErrorMessage)));
            }
            return(new DeleteResult {
                Success = true
            });
        }
        private async Task <DeleteResult> CheckPermission(Actor entity,
                                                          Actor currentActor, bool hardMode)
        {
            var checkModel = new CheckDeletePermissionModel <Actor>
            {
                Entity   = entity,
                Actor    = currentActor,
                HardMode = hardMode
            };
            var validator       = new ActorDeletePermissionValidator();
            var validatorResult = await validator.ValidateAsync(checkModel)
                                  .ConfigureAwait(false);

            if (!validatorResult.IsValid)
            {
                return(ErrorResult
                           (validatorResult.Errors.Select(x => x.ErrorMessage)));
            }
            return(new DeleteResult {
                Success = true
            });
        }