Exemplo n.º 1
0
        private static ErrorData OnAttaching(
            Context context, SiteSettings ss, ResultModel resultModel)
        {
            foreach (var column in ss.Columns.Where(o => o.TypeCs == "Attachments"))
            {
                if (resultModel.Attachments_Updated(
                        columnName: column.Name,
                        context: context,
                        column: column))
                {
                    var invalid = BinaryValidators.OnUploading(
                        context: context,
                        ss: ss,
                        attachmentsHash: resultModel.AttachmentsHash);
                    switch (invalid)
                    {
                    case Error.Types.OverLimitQuantity:
                        return(new ErrorData(
                                   type: Error.Types.OverLimitQuantity,
                                   data: column.LimitQuantity.ToInt().ToString()));

                    case Error.Types.OverLimitSize:
                        return(new ErrorData(
                                   type: Error.Types.OverLimitSize,
                                   data: column.LimitSize.ToInt().ToString()));

                    case Error.Types.OverTotalLimitSize:
                        return(new ErrorData(
                                   type: Error.Types.OverTotalLimitSize,
                                   data: column.TotalLimitSize.ToInt().ToString()));

                    case Error.Types.OverLocalFolderLimitSize:
                        return(new ErrorData(
                                   type: Error.Types.OverLocalFolderLimitSize,
                                   data: column.LocalFolderLimitSize.ToInt().ToString()));

                    case Error.Types.OverLocalFolderTotalLimitSize:
                        return(new ErrorData(
                                   type: Error.Types.OverLocalFolderTotalLimitSize,
                                   data: column.LocalFolderTotalLimitSize.ToInt().ToString()));

                    case Error.Types.OverTenantStorageSize:
                        return(new ErrorData(
                                   type: Error.Types.OverTenantStorageSize,
                                   data: context.ContractSettings.StorageSize.ToInt().ToString()));
                    }
                }
            }
            return(new ErrorData(type: Error.Types.None));
        }
        public static ErrorData OnCreating(
            Context context, SiteSettings ss, ResultModel resultModel, bool api = false)
        {
            if (api && (context.ContractSettings.Api == false || !Parameters.Api.Enabled))
            {
                return(new ErrorData(type: Error.Types.InvalidRequest));
            }
            if (!context.CanCreate(ss: ss))
            {
                return(new ErrorData(type: Error.Types.HasNotPermission));
            }
            ss.SetColumnAccessControls(context: context, mine: resultModel.Mine(context: context));
            foreach (var column in ss.Columns
                     .Where(o => !o.CanCreate)
                     .Where(o => !ss.FormulaTarget(o.ColumnName))
                     .Where(o => !o.Linking))
            {
                switch (column.ColumnName)
                {
                case "Title":
                    if (resultModel.Title_Updated(context: context, column: column))
                    {
                        return(new ErrorData(type: Error.Types.HasNotPermission));
                    }
                    break;

                case "Body":
                    if (resultModel.Body_Updated(context: context, column: column))
                    {
                        return(new ErrorData(type: Error.Types.HasNotPermission));
                    }
                    break;

                case "Status":
                    if (resultModel.Status_Updated(context: context, column: column))
                    {
                        return(new ErrorData(type: Error.Types.HasNotPermission));
                    }
                    break;

                case "Manager":
                    if (resultModel.Manager_Updated(context: context, column: column))
                    {
                        return(new ErrorData(type: Error.Types.HasNotPermission));
                    }
                    break;

                case "Owner":
                    if (resultModel.Owner_Updated(context: context, column: column))
                    {
                        return(new ErrorData(type: Error.Types.HasNotPermission));
                    }
                    break;

                case "Comments":
                    if (!ss.GetColumn(context: context, columnName: "Comments").CanUpdate)
                    {
                        return(new ErrorData(type: Error.Types.HasNotPermission));
                    }
                    break;

                default:
                    switch (Def.ExtendedColumnTypes.Get(column.Name))
                    {
                    case "Class":
                        if (resultModel.Class_Updated(
                                columnName: column.Name,
                                context: context,
                                column: column))
                        {
                            return(new ErrorData(type: Error.Types.HasNotPermission));
                        }
                        break;

                    case "Num":
                        if (resultModel.Num_Updated(
                                columnName: column.Name,
                                context: context,
                                column: column))
                        {
                            return(new ErrorData(type: Error.Types.HasNotPermission));
                        }
                        break;

                    case "Date":
                        if (resultModel.Date_Updated(
                                columnName: column.Name,
                                context: context,
                                column: column))
                        {
                            return(new ErrorData(type: Error.Types.HasNotPermission));
                        }
                        break;

                    case "Description":
                        if (resultModel.Description_Updated(
                                columnName: column.Name,
                                context: context,
                                column: column))
                        {
                            return(new ErrorData(type: Error.Types.HasNotPermission));
                        }
                        break;

                    case "Check":
                        if (resultModel.Check_Updated(
                                columnName: column.Name,
                                context: context,
                                column: column))
                        {
                            return(new ErrorData(type: Error.Types.HasNotPermission));
                        }
                        break;

                    case "Attachments":
                        if (resultModel.Attachments_Updated(
                                columnName: column.Name,
                                context: context,
                                column: column))
                        {
                            return(new ErrorData(type: Error.Types.HasNotPermission));
                        }
                        break;
                    }
                    break;
                }
            }
            return(new ErrorData(type: Error.Types.None));
        }
Exemplo n.º 3
0
        public static ErrorData OnCreating(
            Context context, SiteSettings ss, ResultModel resultModel, bool api = false)
        {
            if (api)
            {
                if ((!Parameters.Api.Enabled ||
                     context.ContractSettings.Api == false ||
                     context.UserSettings?.AllowApi(context: context) == false))
                {
                    return(new ErrorData(type: Error.Types.InvalidRequest));
                }
                if (context.InvalidJsonData)
                {
                    return(new ErrorData(type: Error.Types.InvalidJsonData));
                }
            }
            if (ss.LockedTable())
            {
                return(new ErrorData(
                           type: Error.Types.LockedTable,
                           data: new string[]
                {
                    ss.LockedTableUser.Name,
                    ss.LockedTableTime.DisplayValue.ToString(context.CultureInfo())
                }));
            }
            if (!context.CanCreate(ss: ss) || resultModel.ReadOnly)
            {
                return(!context.CanRead(ss: ss)
                    ? new ErrorData(type: Error.Types.NotFound)
                    : new ErrorData(type: Error.Types.HasNotPermission));
            }
            foreach (var column in ss.Columns
                     .Where(o => !o.CanCreate(
                                context: context,
                                ss: ss,
                                mine: resultModel.Mine(context: context)))
                     .Where(o => !ss.FormulaTarget(o.ColumnName))
                     .Where(o => !o.Linking))
            {
                switch (column.ColumnName)
                {
                case "Title":
                    if (resultModel.Title_Updated(context: context, column: column))
                    {
                        return(new ErrorData(type: Error.Types.HasNotPermission));
                    }
                    break;

                case "Body":
                    if (resultModel.Body_Updated(context: context, column: column))
                    {
                        return(new ErrorData(type: Error.Types.HasNotPermission));
                    }
                    break;

                case "Status":
                    if (resultModel.Status_Updated(context: context, column: column))
                    {
                        return(new ErrorData(type: Error.Types.HasNotPermission));
                    }
                    break;

                case "Manager":
                    if (resultModel.Manager_Updated(context: context, column: column))
                    {
                        return(new ErrorData(type: Error.Types.HasNotPermission));
                    }
                    break;

                case "Owner":
                    if (resultModel.Owner_Updated(context: context, column: column))
                    {
                        return(new ErrorData(type: Error.Types.HasNotPermission));
                    }
                    break;

                case "Locked":
                    if (resultModel.Locked_Updated(context: context, column: column))
                    {
                        return(new ErrorData(type: Error.Types.HasNotPermission));
                    }
                    break;

                case "Comments":
                    if (resultModel.Comments_Updated(context: context))
                    {
                        return(new ErrorData(type: Error.Types.HasNotPermission));
                    }
                    break;

                default:
                    switch (Def.ExtendedColumnTypes.Get(column.Name))
                    {
                    case "Class":
                        if (resultModel.Class_Updated(
                                columnName: column.Name,
                                context: context,
                                column: column))
                        {
                            return(new ErrorData(type: Error.Types.HasNotPermission));
                        }
                        break;

                    case "Num":
                        if (resultModel.Num_Updated(
                                columnName: column.Name,
                                context: context,
                                column: column))
                        {
                            return(new ErrorData(type: Error.Types.HasNotPermission));
                        }
                        break;

                    case "Date":
                        if (resultModel.Date_Updated(
                                columnName: column.Name,
                                context: context,
                                column: column))
                        {
                            return(new ErrorData(type: Error.Types.HasNotPermission));
                        }
                        break;

                    case "Description":
                        if (resultModel.Description_Updated(
                                columnName: column.Name,
                                context: context,
                                column: column))
                        {
                            return(new ErrorData(type: Error.Types.HasNotPermission));
                        }
                        break;

                    case "Check":
                        if (resultModel.Check_Updated(
                                columnName: column.Name,
                                context: context,
                                column: column))
                        {
                            return(new ErrorData(type: Error.Types.HasNotPermission));
                        }
                        break;

                    case "Attachments":
                        if (resultModel.Attachments_Updated(
                                columnName: column.Name,
                                context: context,
                                column: column))
                        {
                            return(new ErrorData(type: Error.Types.HasNotPermission));
                        }
                        break;
                    }
                    break;
                }
            }
            var errorData = OnAttaching(
                context: context,
                ss: ss,
                resultModel: resultModel);

            if (errorData.Type != Error.Types.None)
            {
                return(errorData);
            }
            var inputErrorData = OnInputValidating(
                context: context,
                ss: ss,
                resultModel: resultModel).FirstOrDefault();

            if (inputErrorData.Type != Error.Types.None)
            {
                return(inputErrorData);
            }
            return(new ErrorData(type: Error.Types.None));
        }