/*
* OpenAPI Petstore
*
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* The version of the OpenAPI document: 1.0.0
* Generated by: https://github.com/openapitools/openapi-generator.git
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.IO;
using System.Runtime.Serialization;
using System.Text;
using System.Text.RegularExpressions;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Linq;
using System.ComponentModel.DataAnnotations;
using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter;
namespace Org.OpenAPITools.Models
{
///
/// A pet for sale in the pet store
///
[DataContract(Name = "Pet")]
public partial class Pet : IEquatable, IValidatableObject
{
///
/// pet status in the store
///
/// pet status in the store
[JsonConverter(typeof(StringEnumConverter))]
public enum StatusEnum
{
///
/// Enum Available for value: available
///
[EnumMember(Value = "available")]
Available = 1,
///
/// Enum Pending for value: pending
///
[EnumMember(Value = "pending")]
Pending = 2,
///
/// Enum Sold for value: sold
///
[EnumMember(Value = "sold")]
Sold = 3
}
///
/// pet status in the store
///
/// pet status in the store
[DataMember(Name = "status", EmitDefaultValue = false)]
public StatusEnum? Status { get; set; }
///
/// Initializes a new instance of the class.
///
[JsonConstructorAttribute]
protected Pet() { }
///
/// Initializes a new instance of the class.
///
/// id.
/// category.
/// name (required).
/// photoUrls (required).
/// tags.
/// pet status in the store.
public Pet(long id = default(long), Category category = default(Category), string name = default(string), List photoUrls = default(List), List tags = default(List), StatusEnum? status = default(StatusEnum?))
{
// to ensure "name" is required (not null)
this.Name = name ?? throw new ArgumentNullException("name is a required property for Pet and cannot be null");
// to ensure "photoUrls" is required (not null)
this.PhotoUrls = photoUrls ?? throw new ArgumentNullException("photoUrls is a required property for Pet and cannot be null");
this.Id = id;
this.Category = category;
this.Tags = tags;
this.Status = status;
}
///
/// Gets or Sets Id
///
[DataMember(Name = "id", EmitDefaultValue = false)]
public long Id { get; set; }
///
/// Gets or Sets Category
///
[DataMember(Name = "category", EmitDefaultValue = false)]
public Category Category { get; set; }
///
/// Gets or Sets Name
///
[DataMember(Name = "name", IsRequired = true, EmitDefaultValue = false)]
public string Name { get; set; }
///
/// Gets or Sets PhotoUrls
///
[DataMember(Name = "photoUrls", IsRequired = true, EmitDefaultValue = false)]
public List PhotoUrls { get; set; }
///
/// Gets or Sets Tags
///
[DataMember(Name = "tags", EmitDefaultValue = false)]
public List Tags { get; set; }
///
/// Returns the string presentation of the object
///
/// String presentation of the object
public override string ToString()
{
var sb = new StringBuilder();
sb.Append("class Pet {\n");
sb.Append(" Id: ").Append(Id).Append("\n");
sb.Append(" Category: ").Append(Category).Append("\n");
sb.Append(" Name: ").Append(Name).Append("\n");
sb.Append(" PhotoUrls: ").Append(PhotoUrls).Append("\n");
sb.Append(" Tags: ").Append(Tags).Append("\n");
sb.Append(" Status: ").Append(Status).Append("\n");
sb.Append("}\n");
return sb.ToString();
}
///
/// Returns the JSON string presentation of the object
///
/// JSON string presentation of the object
public virtual string ToJson()
{
return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
}
///
/// Returns true if objects are equal
///
/// Object to be compared
/// Boolean
public override bool Equals(object input)
{
return this.Equals(input as Pet);
}
///
/// Returns true if Pet instances are equal
///
/// Instance of Pet to be compared
/// Boolean
public bool Equals(Pet input)
{
if (input == null)
return false;
return
(
this.Id == input.Id ||
this.Id.Equals(input.Id)
) &&
(
this.Category == input.Category ||
(this.Category != null &&
this.Category.Equals(input.Category))
) &&
(
this.Name == input.Name ||
(this.Name != null &&
this.Name.Equals(input.Name))
) &&
(
this.PhotoUrls == input.PhotoUrls ||
this.PhotoUrls != null &&
input.PhotoUrls != null &&
this.PhotoUrls.SequenceEqual(input.PhotoUrls)
) &&
(
this.Tags == input.Tags ||
this.Tags != null &&
input.Tags != null &&
this.Tags.SequenceEqual(input.Tags)
) &&
(
this.Status == input.Status ||
this.Status.Equals(input.Status)
);
}
///
/// Gets the hash code
///
/// Hash code
public override int GetHashCode()
{
unchecked // Overflow is fine, just wrap
{
int hashCode = 41;
hashCode = hashCode * 59 + this.Id.GetHashCode();
if (this.Category != null)
hashCode = hashCode * 59 + this.Category.GetHashCode();
if (this.Name != null)
hashCode = hashCode * 59 + this.Name.GetHashCode();
if (this.PhotoUrls != null)
hashCode = hashCode * 59 + this.PhotoUrls.GetHashCode();
if (this.Tags != null)
hashCode = hashCode * 59 + this.Tags.GetHashCode();
hashCode = hashCode * 59 + this.Status.GetHashCode();
return hashCode;
}
}
///
/// To validate all properties of the instance
///
/// Validation context
/// Validation Result
IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
{
yield break;
}
}
}