示例#1
0
        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));
        }
示例#2
0
 public async Task <PrintLabelResult> PrintLabelAsync(PrintLabelForRDTRequestArgs reqArgs)
 {
     return(await rdtRepository.PrintLabelAsync(reqArgs));
 }
示例#3
0
        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
                });
            }
        }