using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; using Pos.Models; using Pos.Service; namespace Pos { /// /// Interaction logic for PrintReceiptWindow.xaml /// public partial class PrintReceiptWindow : Window { private List _receiptList = new List(); private bool _init = false; private int _saleId = 0; private readonly SaleHistoryService _saleHistoryService = new SaleHistoryService(); private readonly SaleService _saleService = new SaleService(); public PrintReceiptWindow() { InitializeComponent(); StartDatePicker.DisplayDate = DateTime.Now.AddDays(-7); StartDatePicker.SelectedDate = DateTime.Now.AddDays(-7); EndDatePicker.DisplayDate = DateTime.Now; EndDatePicker.SelectedDate = DateTime.Now; } private void Search_OnClick(object sender, RoutedEventArgs e) { if (StartDatePicker.SelectedDate is not DateTime startDate || EndDatePicker.SelectedDate is not DateTime endDate) return; List receipts; try { receipts = _saleHistoryService.Search(startDate, endDate); } catch (ArgumentException exception) { MessageBox.Show( exception.Message, "Ugyldigt datointerval", MessageBoxButton.OK, MessageBoxImage.Warning); return; } _receiptList.Clear(); foreach (ReceiptSummaryModel receipt in receipts) { ListReceiptModel receiptModel = new ListReceiptModel { Id = receipt.SaleId, Content = $"{receipt.SaleTime:dd-MM-yyyy HH:mm} - Pris: {receipt.Total:0.00}" }; _receiptList.Add(receiptModel); } _init = true; ListReciept.ItemsSource = null; ListReciept.ItemsSource = _receiptList; _init = false; } public class ListReceiptModel { public int Id { get; set; } public string Content { get; set; } public override string ToString() { return Content; } } private void ListReciept_OnSelectionChanged(object sender, SelectionChangedEventArgs e) { if (_init || e.AddedItems.Count == 0) return; ListReceiptModel data = (ListReceiptModel) e.AddedItems[0]; _saleId = data.Id; ReceiptDetailModel receipt = _saleHistoryService.GetReceipt(data.Id); StringBuilder sb = new StringBuilder(); foreach (ReceiptLineModel saleLine in receipt.Lines) { sb.AppendLine( $"{saleLine.Product} - {saleLine.Pieces} stk. a' {saleLine.Price:0.00} = {saleLine.Total:0.00}"); } sb.AppendLine($"Total: {receipt.Total:0.00} kr."); PrintReceipt.Visibility = Visibility.Visible; SaleLines.Clear(); SaleLines.Text = sb.ToString(); } private void PrintReceipt_OnClick(object sender, RoutedEventArgs e) { _saleService.PrintReceipt(_saleId); } } }