//---------------------------------------------------------------------------------------------
// This file was AUTO-GENERATED by "Web API Controllers" Xomega.Net generator.
//
// Manual CHANGES to this file WILL BE LOST when the code is regenerated.
//---------------------------------------------------------------------------------------------

using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Xomega.Framework;
using Xomega.Framework.Services;

namespace AdventureWorks.Services.Rest
{
    ///<summary>
    /// Cross-reference table mapping products to special offer discounts.
    ///</summary>
    public partial class SpecialOfferProductController : BaseController
    {
        private readonly ISpecialOfferProductService svc;

        public SpecialOfferProductController(ErrorList errorList, ErrorParser errorParser, ISpecialOfferProductService service)
            : base(errorList, errorParser)
        {
            svc = service;
        }

        ///<summary>
        /// Reads a list of Special Offer Product objects based on the specified criteria.
        ///</summary>
        [Route("product/{_productId}/special offer")]
        [HttpGet]
        public async Task<ActionResult> ReadListAsync([FromRoute] int _productId)
        {
            ActionResult response;
            try
            {
                if (ModelState.IsValid)
                {
                    Output<ICollection<SpecialOfferProduct_ReadListOutput>> output = await svc.ReadListAsync(_productId);
                    response = StatusCode((int)output.HttpStatus, output);
                    return response;
                }
                else
                {
                    currentErrors.AddModelErrors(ModelState);
                }
            }
            catch (Exception ex)
            {
                currentErrors.MergeWith(errorsParser.FromException(ex));
            }
            response = StatusCode((int)currentErrors.HttpStatus, new Output(currentErrors));
            return response;
        }
    }
}