Method to get printers and printers for receipt - Microsoft Dynamics 365 Vietnam

Microsoft Dynamics 365 Vietnam

Song Nghia - Microsoft Dynamics 365 Vietnam

Breaking

Thursday, May 21, 2020

Method to get printers and printers for receipt

Method to get printers and printers for receipt

Song Nghia - Technical Consultant

private ReadOnlyCollection GetPrinters(RequestContext context, string hardwareProfileId, ReceiptType receiptType)
{
 Terminal terminal = context.GetTerminal();
 if (string.IsNullOrEmpty(hardwareProfileId))
 {
  hardwareProfileId = terminal.HardwareProfile;
 }

 GetPrintersDataRequest getPrintersByReceiptTypeDataRequest = new GetPrintersDataRequest(terminal.TerminalId, receiptType, QueryResultSettings.AllRecords, hardwareProfileId);
 IEnumerable printers = context.Execute>(getPrintersByReceiptTypeDataRequest).PagedEntityCollection.Results;
 Printer printer = printers.FirstOrDefault(p => p.PrinterType == (int)DeviceType.WindowsPrinter);

 return new List() { printer }.AsReadOnly();
}

private ReadOnlyCollection GetPrinterForHardcodeReceipt(RequestContext context, string hardwareProfileId, ReceiptType receiptType)
{
 Terminal terminal = context.GetTerminal();
 if (string.IsNullOrEmpty(hardwareProfileId))
  hardwareProfileId = terminal.HardwareProfile;
 GetHardwareProfileDataRequest profileDataRequest = new GetHardwareProfileDataRequest(hardwareProfileId, QueryResultSettings.SingleRecord);
 HardwareProfile entity = context.Runtime.Execute>((Request)profileDataRequest, context).Entity;
 if (entity != null && entity.Printers != null && entity.Printers.Any())
 {
  HardwareProfilePrinter hardwareProfilePrinter = entity.Printers.FirstOrDefault((Func)(printer => (uint)printer.DeviceType > 0U));
  if (hardwareProfilePrinter != null)
   return new List()
 {
  new Printer()
  {
    ReceiptType = receiptType,
    PrintBehavior = PrintBehavior.Always,
    Terminal = terminal == null ? 0L : terminal.RecordId,
    HardwareProfileId = hardwareProfileId,
    Name = hardwareProfilePrinter.DeviceName,
    PrinterType = (int) hardwareProfilePrinter.DeviceType
  }
 }.AsReadOnly();
 }
 return new List().AsReadOnly();
}