//----------------------
// <auto-generated>
//     Generated using the NSwag toolchain v (http://NSwag.org)
// </auto-generated>
//----------------------

#pragma warning disable 108 // Disable "CS0108 '{derivedDto}.ToJson()' hides inherited member '{dtoBase}.ToJson()'. Use the new keyword if hiding was intended."
#pragma warning disable 114 // Disable "CS0114 '{derivedDto}.RaisePropertyChanged(String)' hides inherited member 'dtoBase.RaisePropertyChanged(String)'. To make the current member override that implementation, add the override keyword. Otherwise add the new keyword."
#pragma warning disable 472 // Disable "CS0472 The result of the expression is always 'false' since a value of type 'Int32' is never equal to 'null' of type 'Int32?'
#pragma warning disable 612 // Disable "CS0612 '...' is obsolete"
#pragma warning disable 649 // Disable "CS0649 Field is never assigned to, and will always have its default value null"
#pragma warning disable 1573 // Disable "CS1573 Parameter '...' has no matching param tag in the XML comment for ...
#pragma warning disable 1591 // Disable "CS1591 Missing XML comment for publicly visible type or member ..."
#pragma warning disable 8073 // Disable "CS8073 The result of the expression is always 'false' since a value of type 'T' is never equal to 'null' of type 'T?'"
#pragma warning disable 3016 // Disable "CS3016 Arrays as attribute arguments is not CLS-compliant"
#pragma warning disable 8600 // Disable "CS8600 Converting null literal or possible null value to non-nullable type"
#pragma warning disable 8602 // Disable "CS8602 Dereference of a possibly null reference"
#pragma warning disable 8603 // Disable "CS8603 Possible null reference return"
#pragma warning disable 8604 // Disable "CS8604 Possible null reference argument for parameter"
#pragma warning disable 8625 // Disable "CS8625 Cannot convert null literal to non-nullable reference type"
#pragma warning disable 8765 // Disable "CS8765 Nullability of type of parameter doesn't match overridden member (possibly because of nullability attributes)."

namespace MyNamespace
{
    using System = global::System;

    [System.CodeDom.Compiler.GeneratedCode("NSwag", "")]
    public interface IValuesController
    {

        System.Threading.Tasks.Task<System.Collections.Generic.ICollection<Person>> GetAllAsync();


        System.Threading.Tasks.Task PostAsync(string value);


        System.Threading.Tasks.Task<TestEnum> GetAsync(int id);



        System.Threading.Tasks.Task PutAsync(int id, string value);


        System.Threading.Tasks.Task DeleteAsync(int id);


        System.Threading.Tasks.Task<string> GetToStringAsync(int id);


        System.Threading.Tasks.Task<string> GetToIdAsync(int id);


        System.Threading.Tasks.Task<string> GetFooBarAsync(int id);

    }

    [System.CodeDom.Compiler.GeneratedCode("NSwag", "")]

    public partial class ValuesController : Microsoft.AspNetCore.Mvc.ControllerBase
    {
        private IValuesController _implementation;

        public ValuesController(IValuesController implementation)
        {
            _implementation = implementation;
        }

        [Microsoft.AspNetCore.Mvc.HttpGet, Microsoft.AspNetCore.Mvc.Route("api/Values")]
        public System.Threading.Tasks.Task<System.Collections.Generic.ICollection<Person>> GetAll()
        {

            return _implementation.GetAllAsync();
        }

        [Microsoft.AspNetCore.Mvc.HttpPost, Microsoft.AspNetCore.Mvc.Route("api/Values")]
        public System.Threading.Tasks.Task Post([Microsoft.AspNetCore.Mvc.FromBody] string value)
        {

            return _implementation.PostAsync(value);
        }

        [Microsoft.AspNetCore.Mvc.HttpGet, Microsoft.AspNetCore.Mvc.Route("api/Values/{id}")]
        public System.Threading.Tasks.Task<TestEnum> Get(int id)
        {

            return _implementation.GetAsync(id);
        }

        [Microsoft.AspNetCore.Mvc.HttpPut, Microsoft.AspNetCore.Mvc.Route("api/Values/{id}")]
        public System.Threading.Tasks.Task Put(int id, [Microsoft.AspNetCore.Mvc.FromBody] string value)
        {

            return _implementation.PutAsync(id, value);
        }

        [Microsoft.AspNetCore.Mvc.HttpDelete, Microsoft.AspNetCore.Mvc.Route("api/Values/{id}")]
        public System.Threading.Tasks.Task Delete(int id)
        {

            return _implementation.DeleteAsync(id);
        }

        [Microsoft.AspNetCore.Mvc.HttpGet, Microsoft.AspNetCore.Mvc.Route("api/Values/ToString({id})")]
        public System.Threading.Tasks.Task<string> GetToString(int id)
        {

            return _implementation.GetToStringAsync(id);
        }

        [Microsoft.AspNetCore.Mvc.HttpGet, Microsoft.AspNetCore.Mvc.Route("api/Values/id:{id}")]
        public System.Threading.Tasks.Task<string> GetToId(int id)
        {

            return _implementation.GetToIdAsync(id);
        }

        [Microsoft.AspNetCore.Mvc.HttpGet, Microsoft.AspNetCore.Mvc.Route("api/Values/{id}/foo")]
        public System.Threading.Tasks.Task<string> GetFooBar(int id)
        {

            return _implementation.GetFooBarAsync(id);
        }

    }

    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "")]
    public partial class Person
    {

        [Newtonsoft.Json.JsonProperty("firstName", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
        public string FirstName { get; set; }

        [Newtonsoft.Json.JsonProperty("middleName", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
        public string MiddleName { get; set; }

        [Newtonsoft.Json.JsonProperty("lastName", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
        public string LastName { get; set; }

        [Newtonsoft.Json.JsonProperty("dayOfBirth", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
        public System.DateTimeOffset DayOfBirth { get; set; }

    }

    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "")]
    public enum TestEnum
    {

        [System.Runtime.Serialization.EnumMember(Value = @"Foo")]
        Foo = 0,

        [System.Runtime.Serialization.EnumMember(Value = @"Bar")]
        Bar = 1,

    }


}

#pragma warning restore  108
#pragma warning restore  114
#pragma warning restore  472
#pragma warning restore  612
#pragma warning restore  649
#pragma warning restore 1573
#pragma warning restore 1591
#pragma warning restore 8073
#pragma warning restore 3016
#pragma warning restore 8600
#pragma warning restore 8602
#pragma warning restore 8603
#pragma warning restore 8604
#pragma warning restore 8625
#pragma warning restore 8765