Reputation: 3
I am getting this error '{"Message":"The request is invalid.","MessageDetail":"The parameters dictionary contains a null entry for parameter 'Fromdate' of non-nullable type 'System.DateTime' for method 'System.Net.Http.HttpResponseMessage CustomerWiseQuotationHistory(Int64, System.String, System.DateTime, System.DateTime)' in 'shenoyapi.Controllers.ReportController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter."}'
This is my Component.ts
validate(): boolean {
this.appErrors = [];
if (this.objProductQuotationHistory.ProductName=='') {
this.appErrors.push({ Title: 'Select Product Name.' });
}
if (this.objProductQuotationHistory.FromDate > this.objProductQuotationHistory.ToDate) {
this.appErrors.push({ Title: 'From Date date cannot be greater than To Date.' });
}
if (this.appErrors.length > 0) {
return false;
}
else {
return true;
}
}
print(type: string ): void {
if (!this.validate()) {
const dialogRef = this.dialog.open(AlertdialogComponent, { data: this.appErrors });
return;
}
This is my services.ts
getProductHistory(productId: number,FromDate: Date,ToDate:Date): Observable<number>{
let f = moment(FromDate);
let fromdate = f.format('YYYY-MM-DD');
let t = moment(ToDate);
let todate = t.format('YYYY-MM-DD');
return this.http.get<number>(AppConfig.BASE_API_URL +'/api/report/productwisequotationhistoryreport/' + productId + '/' + fromdate + '/' + todate);
}
this is my api
[Route("api/report/productwisequotationhistoryreport/{id}/{type}/{Fromdate}/{ToDate}")]
[HttpGet]
public HttpResponseMessage ProductrWiseQuotationHistory(long id, string type, DateTime Fromdate, DateTime ToDate)
{
try
{
rptViewer.ProcessingMode = ProcessingMode.Local;
rptViewer.LocalReport.ReportEmbeddedResource = "shenoyapi.Reports.ProductWiseQuotationHistoryReport.rdlc";
var dsHeaderData = SqlHelper.ExecuteDataset(ConfigurationManager.ConnectionStrings["AppDatabaseConnection"].ToString(), CommandType.StoredProcedure, 0, "GetReportHeader");
var dtHeader = new ProductWiseQuotationHistoryDataSource.GetReportHeaderDataTable();
foreach (DataRow item in dsHeaderData.Tables[0].Rows)
{
dtHeader.AddGetReportHeaderRow(
Convert.ToInt64(item[0]),
item[1].ToString(),
item[2].ToString(),
item[3].ToString(),
item[4].ToString(),
item[5].ToString(),
item[6].ToString(),
item[7].ToString(),
item[8].ToString()
);
}
var dsHeader = new ReportDataSource("dsHeader", (DataTable)dtHeader);
rptViewer.LocalReport.DataSources.Add(dsHeader);
var dsProductWiseQuotationHistoryData = SqlHelper.ExecuteDataset(ConfigurationManager.ConnectionStrings["AppDatabaseConnection"].ToString(), CommandType.StoredProcedure, 0,
"GetProductWiseQuotationHistory", new SqlParameter("@ProductId", id), new SqlParameter("@Fromdate", Fromdate), new SqlParameter("@ToDate", ToDate));
var dtProductWiseQuotationHistoryHeader = new ProductWiseQuotationHistoryDataSource.GetProductWiseQuotationHistoryDataTable();
foreach (DataRow item in dsProductWiseQuotationHistoryData.Tables[0].Rows)
{
dtProductWiseQuotationHistoryHeader.AddGetProductWiseQuotationHistoryRow(
Convert.ToInt64(item[0]),
Convert.ToDateTime(item[1]),
Convert.ToInt32(item[2]),
Convert.ToInt32(item[3]),
item[4].ToString(),
Convert.ToDateTime(item[5]),
item[6].ToString(),
item[7].ToString(),
Convert.ToDecimal(item[8]),
Convert.ToDecimal(item[9]),
Convert.ToDecimal(item[10]),
Convert.ToDecimal(item[11]),
Convert.ToDecimal(item[12]),
item[13].ToString(),
item[14].ToString(),
item[15].ToString(),
item[16].ToString(),
item[17].ToString(),
item[18].ToString(),
item[19].ToString(),
item[20].ToString(),
item[21].ToString(),
item[22].ToString(),
item[23].ToString(),
item[24].ToString(),
item[25].ToString(),
item[26].ToString(),
item[27].ToString(),
Convert.ToDecimal(item[28]),
Convert.ToDecimal(item[29]),
Convert.ToDecimal(item[30]),
Convert.ToInt32(item[31]),
item[32].ToString(),
item[33].ToString(),
item[34].ToString(),
item[35].ToString(),
item[36].ToString(),
item[37].ToString(),
(byte[])item[38],
item[39].ToString(),
Convert.ToDecimal(item[40]),
Convert.ToDecimal(item[41]),
Convert.ToDecimal(item[42])
);
}
var dsProductWiseQuotationHistoryHeader = new ReportDataSource("dsReport", (DataTable)dtProductWiseQuotationHistoryHeader);
rptViewer.LocalReport.DataSources.Add(dsProductWiseQuotationHistoryHeader);
byte[] fileBytes = new byte[0];
if (type == "Excel")
{
fileBytes = rptViewer.LocalReport.Render("Excel", null, out mimeType, out encoding, out extension, out streamIds, out warnings);
}
else if (type == "PDF")
{
fileBytes = rptViewer.LocalReport.Render("PDF", null, out mimeType, out encoding, out extension, out streamIds, out warnings);
}
HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
response.Content = new ByteArrayContent(fileBytes);
// response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("inline");
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
if (type == "Excel")
{
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/xls");
response.Content.Headers.ContentDisposition.FileName = "QuotationReport_" + DateTime.Now.Ticks.ToString() + ".xls";
}
else if (type == "PDF")
{
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");
response.Content.Headers.ContentDisposition.FileName = "QuotationReport_" + DateTime.Now.Ticks.ToString() + ".pdf";
}
return response;
}
catch (Exception ee)
{
throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotAcceptable, ee.Message));
}
Upvotes: 0
Views: 1314
Reputation: 1931
getProductHistory(productId: number,FromDate: Date,ToDate:Date)
change name of FromDate and ToDate. Your IDE has marked them as Types. Mayby they are? Check you imports. And you should do checks on these parameters in getProductHistory. They are probably null.
Upvotes: 0