Exemple #1
0
        /// <summary>
        /// Print label.
        /// </summary>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public async Task <ActionResult> Print(PrintLabelViewModel parameters)
        {
            try
            {
                #region Parmeters validation

                if (parameters == null)
                {
                    parameters = new PrintLabelViewModel();
                    TryValidateModel(parameters);
                }

                if (!ModelState.IsValid)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                }

                #endregion

                // Export the template.
                var data = await _exportReportDomain.ExportToFlatFileAsync(parameters, _labelPrintService.PreProductLabelOrignalText);

                foreach (var preProductPrinter in _labelPrintService.PreProductPrinters)
                {
                    if (!preProductPrinter.IsEnabled)
                    {
                        continue;
                    }

                    try
                    {
                        if (preProductPrinter.IsUsbPrinter)
                        {
                            _exportReportDomain.ExportLabelPrint(preProductPrinter,
                                                                 _configurationService.ApplicationDataPath, data);
                        }
                        else
                        {
                            _labelPrintService.Print(
                                new IPEndPoint(IPAddress.Parse(preProductPrinter.Ip), preProductPrinter.Port),
                                data);
                        }
                    }
                    catch
                    {
                        // Suppress printing error.
                    }
                }
                return(new HttpStatusCodeResult(HttpStatusCode.OK));
            }
            catch (Exception exception)
            {
                _log.Error(exception.Message, exception);
                return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError));
            }
        }
        /// <summary>
        /// Print internal label using specific conditions.
        /// </summary>
        /// <param name="parameters"></param>
        /// <param name="terminal"></param>
        /// <returns></returns>
        private async Task PrintInternalLabelAsync(ManagementOfProductLabelViewModel parameters, string terminal)
        {
            // No internal label is specified for printing.
            if (string.IsNullOrEmpty(parameters.InternalLabel) || "1".Equals(parameters.InternalLabel) && "0".Equals(parameters.CodeLabel))
            {
                return;
            }

            var  originalLabelContent = "";
            var  copies       = 1;
            var  vendorCode   = "";
            var  specificCode = "";
            var  codeHeading  = "";
            bool smallFont    = false;

            //! Check for Small Font
            if (parameters.SmallFont)
            {
                smallFont = true;
            }
            else
            {
                smallFont = false;
            }

            // Find number of copies from selected radio button.
            if (Constants.InternalLabel.Pieces.ToString("D").Equals(parameters.InternalLabel) ||
                Constants.InternalLabel.Atm2P.ToString("D").Equals(parameters.InternalLabel) ||
                Constants.InternalLabel.Buzen2P.ToString("D").Equals(parameters.InternalLabel) ||
                Constants.InternalLabel.Sts2P.ToString("D").Equals(parameters.InternalLabel) ||
                Constants.InternalLabel.Stlgg2P.ToString("D").Equals(parameters.InternalLabel) ||
                Constants.InternalLabel.Renesas2P.ToString("D").Equals(parameters.InternalLabel))
            {
                copies = 2;
            }

            // Find printer content.
            if (Constants.CodeLabel.Atm.ToString("D").Equals(parameters.CodeLabel))
            {
                //! Specific Code Label
                if (!string.IsNullOrEmpty(parameters.SpecificCodeLabel))
                {
                    specificCode = parameters.SpecificCodeLabel + " ";
                }
                else
                {
                    specificCode = "ATM ";
                }

                //! KAP Yes/No
                if (parameters.KAP)
                {
                    vendorCode = "KAP";
                }
                else
                {
                    vendorCode = "KCS";
                }

                if (!string.IsNullOrEmpty(parameters.CodeHeading))
                {
                    codeHeading = parameters.CodeHeading + " ";
                }
                else
                {
                    codeHeading = "";
                }

                originalLabelContent = _labelPrintService.FindInternalPrintContent(InternalLabelCollection.AtmKap);
            }
            else
            {
                if (Constants.InternalLabel.Piece.ToString("D").Equals(parameters.InternalLabel) ||
                    Constants.InternalLabel.Pieces.ToString("D").Equals(parameters.InternalLabel))
                {
                    if (smallFont)
                    {
                        originalLabelContent = _labelPrintService.FindInternalPrintContent(InternalLabelCollection.PieceSmallFont);
                    }
                    else
                    {
                        originalLabelContent = _labelPrintService.FindInternalPrintContent(InternalLabelCollection.Piece);
                    }
                }


                else if (Constants.InternalLabel.Atm1P.ToString("D").Equals(parameters.InternalLabel) ||
                         Constants.InternalLabel.Atm2P.ToString("D").Equals(parameters.InternalLabel))
                {
                    originalLabelContent = _labelPrintService.FindInternalPrintContent(InternalLabelCollection.Atm);
                }

                else if (Constants.InternalLabel.Buzen1P.ToString("D").Equals(parameters.InternalLabel) ||
                         Constants.InternalLabel.Buzen2P.ToString("D").Equals(parameters.InternalLabel))
                {
                    originalLabelContent = _labelPrintService.FindInternalPrintContent(InternalLabelCollection.Buzen);
                }

                else if (Constants.InternalLabel.Sts1P.ToString("D").Equals(parameters.InternalLabel) ||
                         Constants.InternalLabel.Sts2P.ToString("D").Equals(parameters.InternalLabel))
                {
                    originalLabelContent = _labelPrintService.FindInternalPrintContent(InternalLabelCollection.Sts);
                }

                else if (Constants.InternalLabel.Stlgg1P.ToString("D").Equals(parameters.InternalLabel) ||
                         Constants.InternalLabel.Stlgg2P.ToString("D").Equals(parameters.InternalLabel))
                {
                    originalLabelContent = _labelPrintService.FindInternalPrintContent(InternalLabelCollection.Stlgg);
                }

                else if (Constants.InternalLabel.Renesas.ToString("D").Equals(parameters.InternalLabel) ||
                         Constants.InternalLabel.Renesas2P.ToString("D").Equals(parameters.InternalLabel))
                {
                    originalLabelContent = _labelPrintService.FindInternalPrintContent(InternalLabelCollection.Renesas);
                }
            }

            if (parameters.CsNo2 < parameters.CsNo1)
            {
                parameters.CsNo2 = parameters.CsNo1;
            }

            var szSupplierName = "";

            if (parameters.SupplierName == "1")
            {
                szSupplierName = "KAP";
            }
            else
            {
                szSupplierName = "KCSP";
            }

            // Print piece by piece.
            for (var csNo = parameters.CsNo1; csNo <= parameters.CsNo2; csNo++)
            {
                var printParameters = new
                {
                    InternalModelName = parameters.ExternalModelName == null ? parameters.ExternalModelName : parameters.ExternalModelName.Trim(),
                    ProductionCode    = parameters.ProductionCode == null ? parameters.ProductionCode : parameters.ProductionCode.Trim(),
                    Productionname    = parameters.ProductionName == null ? parameters.ProductionName : parameters.ProductionName.Trim(),
                    InternalLotNo     = parameters.InternalLotNo == null ? parameters.InternalLotNo : parameters.InternalLotNo.Trim(),
                    parameters.ExternalLotNo,
                    InternalLabelType = parameters.InternalLabelType == null ? parameters.InternalLabelType : parameters.InternalLabelType.Trim(),
                    parameters.InternalSize1,
                    parameters.InternalSize2,
                    parameters.MfgDate,
                    CsNo         = csNo.ToString("D3"),
                    pieceCsNo    = csNo,
                    atmQuantity  = parameters.Quantity.ToString().PadLeft(3, '0').PadRight(5, '0'),
                    VendorCode   = vendorCode,
                    SupplierName = szSupplierName,
                    PartNo       = parameters.ScsPartNo,
                    parameters.Quantity,
                    CodeHeading       = codeHeading,
                    SpecificCodeLabel = specificCode
                };

                for (var piece = 0; piece < parameters.Pieces; piece++)
                {
                    // Find external label form.
                    var labelContent = await _exportReportDomain.ExportToFlatFileAsync(printParameters, originalLabelContent);

                    // Find all active printers in the list.
                    var internalLabelPrinters = _labelPrintService.InternalPrinters.Where(x => x.IsEnabled && x.Terminal.Equals(terminal));
                    foreach (var internalLabelPrinter in internalLabelPrinters)
                    {
                        for (var copy = 0; copy < copies; copy++)
                        {
                            if (internalLabelPrinter.IsUsbPrinter)
                            {
                                _exportReportDomain.ExportLabelPrint(internalLabelPrinter,
                                                                     _configurationService.ApplicationDataPath, labelContent);
                            }
                            else
                            {
                                _labelPrintService.Print(
                                    new IPEndPoint(IPAddress.Parse(internalLabelPrinter.Ip), internalLabelPrinter.Port),
                                    labelContent);
                            }
                        }
                    }
                }
            }
        }