﻿using Composite.Core.WebClient.Renderings.Data;
using Composite.Data;
using Composite.Data.Hierarchy;
using Composite.Data.Hierarchy.DataAncestorProviders;
using Composite.Data.Validation.Validators;
using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;
using System;

namespace WebApiDemo
{
    [AutoUpdateble]
    [DataScope("public")]
    [RelevantToUserType("Developer")]
    [DataAncestorProvider(typeof(NoAncestorDataAncestorProvider))]
    [ImmutableTypeId("e46dcbcf-2da7-4267-8fae-2624328e3d63")]
    [KeyTemplatedXhtmlRenderer(XhtmlRenderingType.Embedable, "<span>{label}</span>")]
    [KeyPropertyName("Id")]
    [Title("Product")]
    [LabelPropertyName("Title")]
    public interface Product : IData
    {
        [ImmutableFieldId("ed5f44c3-cb4a-4c5e-b76c-f952c991d79b")]
        [DefaultFieldNewGuidValue]
        [StoreFieldType(PhysicalStoreFieldType.Guid)]
        [NotNullValidator]
        [FieldPosition(-1)]
        Guid Id { get; set; }

        [ImmutableFieldId("fb0daafa-80f6-48d5-801c-7f712fc4d079")]
        [StoreFieldType(PhysicalStoreFieldType.String, 64)]
        [NotNullValidator]
        [FieldPosition(0)]
        [StringSizeValidator(0, 64)]
        [DefaultFieldStringValue("")]
        [TreeOrdering(1)]
        string Title { get; set; }

        [ImmutableFieldId("2d412b4d-f2bd-483e-bb74-8ca0631c7d3a")]
        [StoreFieldType(PhysicalStoreFieldType.Integer)]
        [FieldPosition(1)]
        [IntegerRangeValidator(-2147483648, 2147483647)]
        [DefaultFieldIntValue(0)]
        int Price { get; set; }
    }
}