public async Task <IHttpActionResult> PrintLabel([FromBody] PrintLabelForRDTRequestArgs reqArgs) { if (reqArgs == null) { return(InvalidRequest("Please provide required parameters.")); } var history = await _rdtService.PrintLabelAsync(reqArgs); return(Ok(history)); }
public async Task <PrintLabelResult> PrintLabelAsync(PrintLabelForRDTRequestArgs reqArgs) { return(await rdtRepository.PrintLabelAsync(reqArgs)); }
public async Task <PrintLabelResult> PrintLabelAsync(PrintLabelForRDTRequestArgs reqArgs) { var printlabelResult = new List <PrintLabelResult>(); //var result = await DbContext.ExecuteReaderAsync() //key of dictionary should contain following //REFID,Testname, LimsID, MaterNr, GID, NrOfPlants (Flow 1) //REFID, TestName, LimsID, E-Number,LotNr, NrOfPlants (flow 2) //REFID, PlantName, LimsID, PlantID, var resultdata = await DbContext.ExecuteReaderAsync(DataConstants.PR_RDT_GET_MATERIAL_TO_PRINT, CommandType.StoredProcedure, args => { args.Add("@TestID", reqArgs.TestID); args.Add("@MaterialStatus", string.Join(",", reqArgs.MaterialStatus)); args.Add("@TVP_TMD", reqArgs.ToTMDTable()); }, reader => new RDTPrintData { LimsID = reader.Get <int>(0), MaterialStatus = reader.Get <string>(1), NrOfPlants = reader.Get <int>(2), DeterminationName = reader.Get <string>(3), MaterialKey = reader.Get <string>(4), GID = reader.Get <string>(5), PlantName = reader.Get <string>(6), LotNr = reader.Get <string>(7), ENumber = reader.Get <string>(8), MasterNr = reader.Get <string>(9), ImportLevel = reader.Get <string>(10) }); if (resultdata.Any()) { foreach (var _data in resultdata) { var labelType = ""; var dict = new Dictionary <string, string>(); if (_data.ImportLevel.EqualsIgnoreCase("Plant")) { labelType = ConfigurationManager.AppSettings["RDTPlantMaterialLabelType"]; dict["QRCODE"] = _data.LimsID.ToText(); dict["PLANTNAME"] = _data.PlantName; dict["PLANTID"] = _data.MaterialKey; } else if (_data.MaterialStatus.EqualsIgnoreCase("variety")) //|| _data.MaterialStatus.EqualsIgnoreCase("parent") { labelType = ConfigurationManager.AppSettings["RDTVarietyMaterialLabelType"]; dict["QRCODE"] = _data.LimsID.ToText(); dict["TESTNAME"] = _data.DeterminationName; dict["ENumber"] = _data.ENumber; dict["LOTNR"] = _data.LotNr; dict["NROFPLANTS"] = _data.NrOfPlants.ToText(); } else //parent, breeding line, dh { labelType = ConfigurationManager.AppSettings["RDTBreedingMaterialLabelType"]; dict["QRCODE"] = _data.LimsID.ToText(); dict["TESTNAME"] = _data.DeterminationName; dict["MASTERNR"] = _data.MasterNr; dict["GID"] = _data.GID; dict["NROFPLANTS"] = _data.NrOfPlants.ToText(); } //print label var result = await PrintToBartenderAsync(dict, labelType); if (result == null) { var item = printlabelResult.FirstOrDefault(x => x.Error == "Some of the print is not completed"); if (item == null) { printlabelResult.Add(new PrintLabelResult { Error = "Some of the print is not completed", Success = false }); } } else if (!result.Success) { var item = printlabelResult.FirstOrDefault(x => x.Error.ToText().Trim() == result.Error.ToText().Trim()); if (item == null) { printlabelResult.Add(new PrintLabelResult { Error = result.Error, Success = false }); } } } var error = printlabelResult.FirstOrDefault(x => !string.IsNullOrWhiteSpace(x.Error)); if (error != null) { var errorMessage = string.Join("," + Environment.NewLine, printlabelResult.Select(x => x.Error)); return(new PrintLabelResult { Error = errorMessage, Success = false }); } else { return(new PrintLabelResult { Error = "Successfully request sent for printing sticker", Success = true }); } } else { return(new PrintLabelResult { Error = "Data not found.", Success = false }); } }