using System.IO;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Runtime.Serialization;

namespace Model
{
    [ServiceContract(Name = "Services")]
    public interface IWeb
    {
        [OperationContract]
        [WebGet(UriTemplate = "SmartScan/CloseApp", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
        void CloseApp();

        [OperationContract]
        [WebGet(UriTemplate = "SmartScan/WorkWithCamera", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
        WebResultCamera WorkWithCamera();

        [OperationContract]
        [WebInvoke(Method = "POST", UriTemplate = "SmartScan/WorkWithCode", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
        WebResultCode WorkWithCode(Stream json);

    }

    [DataContract]
    public class WebResultCamera
    {
        [DataMember]
        public int ErrorCode { get; set; }
        [DataMember]
        public string Msg { get; set; }
        [DataMember]
        public WebCodeAll[] Data { get; set; }

        public WebResultCamera()
        {
            ErrorCode = 0;
            Msg = "OK";
        }
    }

    [DataContract]
    public class WebResultCode
    { 
        [DataMember]
        public int ErrorCode { get; set; }
        [DataMember]
        public string Msg { get; set; }
        [DataMember]
        public WebCodeText[] Data { get; set; }

        public WebResultCode()
        {
            ErrorCode = 0;
            Msg = "OK";
        }
    }

    public class WebCodeAll
    {
        public string Text { get; set; } = "";
        public string CodeType { get; set; } = "";
        public float CenterX { get; set; } = 0;
        public float CenterY { get; set; } = 0;
        public float Angle { get; set; } = 0;
        public float Width { get; set; } = 0;
        public float Height { get; set; } = 0;
        public bool IsUsed { get; set; } = false;

    }

    public class WebCodeText
    {
        public string Text { get; set; } = "";
        public bool IsUsed { get; set; } = false;

    }
}