I am learning to develop web api services in .NET Core Web API. Now I trying to execute stored procedure and return a list. But my code does not show the data after stored procedure execution. Any help is much appreciated.
BL
public string VantageEntities { get; private set; }
public List<SalesAndReturns_RPT> GetOrders(string Year, VantageContext _context)
{
string conn = _context.Database.GetDbConnection().ConnectionString;
using (SqlConnection sql = new SqlConnection(conn))
{
sql.Open();
using (SqlCommand cmd = new SqlCommand("AllSellout", sql))
{
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@Year", Year));
List<SalesAndReturns_RPT> response = null;
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
//response = Convert.ToDecimal(reader.GetDecimal(0));
}
}
sql.Close();
return response;
}
}
}
controller
namespace Vantage.Core.Direct.API.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class PieChartController : ControllerBase
{
private readonly VantageContext _context;
public PieChartController(VantageContext context)
{
_context = context;
}
[HttpGet]
public IEnumerable<DAL.Models.SalesAndReturns_RPT> GetOrders(string Year)
{
var list = new PieChartMgt().GetOrders(Year, _context);
return list;
}
}
}
My stored procedure
ALTER PROCEDURE AllSellout
@Year VARCHAR(6)
AS
BEGIN
SELECT DISTINCT BusinessArea, sum(NetValue) as sumNetValue
FROM SalesAndReturns_RPT
WHERE year(Call_ActualStartDate) = @Year
GROUP BY BusinessArea
ORDER BY sumNetValue DESC
END
SalesAndReturns_RPT.cs
public partial class SalesAndReturns_RPT
{
public int UID { get; set; }
public string Distributor { get; set; }
public string Id { get; set; }
public string DistributorID { get; set; }
public string Outlet { get; set; }
public string OutletID { get; set; }
public string SalesOrgName { get; set; }
public decimal? NetValue { get; set; }
public string BusinessArea { get; set; }
}
try this
var response = new List<SalesAndReturns_RPT>();
using (var reader = cmd.ExecuteReader())
{
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
var sales= new SalesAndReturns_RPT();
sales.BusinessArea = Convert.ToDecimal(reader.GetString(0));
sales.NetValue = Convert.ToDecimal(reader.GetDecimal(1));
response.Add(sales);
}
}
}
return response;