using OnlineSalesAutoCrop.CoreAPI.Models.Objects.Setups;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Diagnostics.CodeAnalysis;

namespace OnlineSalesAutoCrop.CoreAPI.Models.Requests.Systems
{
	public class ProdByInvTypeId
	{
		[Required, NotNull, Range(minimum: 1, maximum: 20, ConvertValueInInvariantCulture = true, ErrorMessage = "InventoryTypeId must be 1 to 20")]
		public int InventoryTypeId { get; set; }
		public string Criteria { get; set; }
	}

	public class ProdByInvTypeIds
	{
		public bool MaterialOnly { get; set; }
		public List<int> InventoryTypeIds { get; set; }
		public string Criteria { get; set; }
	}

	public class ProdStockByInvTypeIds : ProdByInvTypeIds
	{
		public int StoreId { get; set; }
		public int StockOf { get; set; }
		public bool HaveStockOnly { get; set; }
	}

	public class SalesTxnTypeRequest
	{
		public int TranType { get; set; }
		public int TypeOfTran { get; set; }
	}

	public class ProdByInvTypeIdAndCode
	{
		[Required, NotNull, Range(minimum: 1, maximum: 20, ConvertValueInInvariantCulture = true, ErrorMessage = "InventoryTypeId must be 1 to 20")]
		public int InventoryTypeId { get; set; }

		[Required, NotNull, StringLength(20, MinimumLength = 4, ErrorMessage = "ProductCode must be between 4 to 20 characters.")]
		public string ProductCode { get; set; }
	}

	public class LookupDataBaseRequest
	{
		public EnumLookupType LookupType { get; set; }
	}

	public class LookupDataRequest : LookupDataBaseRequest
	{
		public int ExcludeItemId { get; set; } = -1;
	}

	public class LookupDataEntryRequest
	{
		public List<LookupDataExt> Items { get; set; }
	}

	public class LookupDataByIdRequest
	{
		[Range(minimum: 1, maximum: int.MaxValue, ConvertValueInInvariantCulture = true, ErrorMessage = "Lookup Id is required")]
		public int LookupId { get; set; }
	}

	public class LabelSettingByIdRequest
	{
		[Range(minimum: 1, maximum: int.MaxValue, ConvertValueInInvariantCulture = true, ErrorMessage = "Setting Id is required")]
		public int SettingId { get; set; }
	}

	public class LabelSettingRequest
	{
		public int SettingId { get; set; }
		public string Label01 { get; set; }
		public int Label01Req { get; set; }
		public string Label01RegExp { get; set; }
		public string Label02 { get; set; }
		public int Label02Req { get; set; }
		public string Label02RegExp { get; set; }
		public string Label03 { get; set; }
		public int Label03Req { get; set; }
		public string Label03RegExp { get; set; }
		public string Label04 { get; set; }
		public int Label04Req { get; set; }
		public string Label04RegExp { get; set; }
		public string Label05 { get; set; }
		public int Label05Req { get; set; }
		public string Label05RegExp { get; set; }
		public string Label06 { get; set; }
		public int Label06Req { get; set; }
		public string Label06RegExp { get; set; }
		public string Label07 { get; set; }
		public int Label07Req { get; set; }
		public string Label07RegExp { get; set; }
		public string Label08 { get; set; }
		public int Label08Req { get; set; }
		public string Label08RegExp { get; set; }
		public string Label09 { get; set; }
		public int Label09Req { get; set; }
		public string Label09RegExp { get; set; }
		public string Label10 { get; set; }
		public int Label10Req { get; set; }
		public string Label10RegExp { get; set; }
		public string Label11 { get; set; }
		public int Label11Req { get; set; }
		public string Label11RegExp { get; set; }
		public string Label12 { get; set; }
		public int Label12Req { get; set; }
		public string Label12RegExp { get; set; }
		public string Label13 { get; set; }
		public int Label13Req { get; set; }
		public string Label13RegExp { get; set; }
		public string Label14 { get; set; }
		public int Label14Req { get; set; }
		public string Label14RegExp { get; set; }
		public string Label15 { get; set; }
		public int Label15Req { get; set; }
		public string Label15RegExp { get; set; }
		public string Label16 { get; set; }
		public int Label16Req { get; set; }
		public string Label16RegExp { get; set; }
		public string Label17 { get; set; }
		public int Label17Req { get; set; }
		public string Label17RegExp { get; set; }
		public string Label18 { get; set; }
		public int Label18Req { get; set; }
		public string Label18RegExp { get; set; }
		public string Label19 { get; set; }
		public int Label19Req { get; set; }
		public string Label19RegExp { get; set; }
		public string Label20 { get; set; }
		public int Label20Req { get; set; }
		public string Label20RegExp { get; set; }
		public string Label21 { get; set; }
		public int Label21Req { get; set; }
		public string Label21RegExp { get; set; }
		public string Label22 { get; set; }
		public int Label22Req { get; set; }
		public string Label22RegExp { get; set; }
		public string Label23 { get; set; }
		public int Label23Req { get; set; }
		public string Label23RegExp { get; set; }
		public string Label24 { get; set; }
		public int Label24Req { get; set; }
		public string Label24RegExp { get; set; }
		public string Label25 { get; set; }
		public int Label25Req { get; set; }
		public string Label25RegExp { get; set; }
		public string Label26 { get; set; }
		public int Label26Req { get; set; }
		public string Label26RegExp { get; set; }
		public string Label27 { get; set; }
		public int Label27Req { get; set; }
		public string Label27RegExp { get; set; }
		public string Label28 { get; set; }
		public int Label28Req { get; set; }
		public string Label28RegExp { get; set; }
		public string Label29 { get; set; }
		public int Label29Req { get; set; }
		public string Label29RegExp { get; set; }
		public string Label30 { get; set; }
		public int Label30Req { get; set; }
		public string Label30RegExp { get; set; }
	}
}
