using System; using System.Linq; using System.Web; using System.Web.UI; using Common; using System.Web.UI.WebControls; using System.Web.Hosting; using System.Data.Entity; //20180119 - Added user who did the Pickup next to the Pre-list number - maanie //20250318 - Modified barcode generation to only include Pastel code for dispatch barcodes, not for invoices - maanie public partial class RootDispatch : Page { private int CustomerId { get { int id; return Page.RouteData.Values["customerid"] != null && int.TryParse(Page.RouteData.Values["customerid"].ToString(), out id) ? id : 0; } } private int Id { get { int id; return Page.RouteData.Values["id"] != null && int.TryParse(Page.RouteData.Values["id"].ToString(), out id) ? id : 0; } } private string Action { get { return Page.RouteData.Values["action"] == null ? string.Empty : Page.RouteData.Values["action"].ToString(); } } protected void Page_Load(object sender, EventArgs e) { if (Id == 0 || Page.IsPostBack) return; if (Action.ToLower() == "print") ScriptManager.RegisterStartupScript(this, typeof(Page), "PrintPage", "window.setTimeout('this.print();', 2000);", true); using (var db = new DataModel()) { Customer customer; if (User.Identity.Name == "test@test.com") { customer = db.Customers.FirstOrDefault(f => f.CustomerId == CustomerId); // lets determine the logo that needs to be displayed var company = db.Companies.Where(x => x.CompanyID == customer.CompanyID).FirstOrDefault(); var imagePath = @"/Images/" + company.LogoName; if (company.CompanyID == 2) { logo.Height = 250; } logo.Src = imagePath; logo.Alt = company.LogoName; } else { var customerLogin = db.GetCustomerLoginFromGuid(HttpContext.Current.User.Identity.Name).FirstOrDefault(); if (customerLogin == null) return; customer = db.Customers.FirstOrDefault(f => f.CustomerId == customerLogin.CustomerId && f.CustomerId == CustomerId); // lets determine the logo that needs to be displayed var company = db.Companies.Where(x => x.CompanyID == customer.CompanyID).FirstOrDefault(); var imagePath = @"/Images/" + company.LogoName; if(company.CompanyID == 2) { logo.Height = 250; } logo.Src = imagePath; logo.Alt = company.LogoName; } if (customer == null) return; //if (customer.BillingProfileId == 1) LoadFromInvoice(); //else LoadFromDispatch(); LoadFromDispatch(); } } private void LoadFromInvoice() { using (var db = new DataModel()) { var invoice = db.Invoices.FirstOrDefault(f => f.InvoiceId == Id && f.CustomerId == CustomerId); if (invoice == null) return; CompanyAddressLabel.Text = string.Format("{0} / {1}", Settings.CompanyAddress, Settings.CompanyPhone); CompanyEmailLabel.Text = string.Format("Email: {0}", Settings.CompanyEmail); CompanyVATNumberLabel.Text = string.Format("VAT Number: {0}", Settings.CompanyVatNumber); DispatchIdLabel.Text = invoice.InvoiceId.ToString().PadLeft(4, '0'); CustomerName.Text = invoice.Customer.Name; DateLabel.Text += @"   " + invoice.Workload.DateCreated.ToShortDateString(); TimeLabel.Text += @"   " + invoice.Workload.DateCreated.ToShortTimeString(); CustomerAddressLine1.Text = invoice.Customer.AddressLine1; CustomerAddressLine2.Text = invoice.Customer.AddressLine2; CustomerAddressCity.Text = invoice.Customer.AddressCity; CustomerAddressPostCode.Text = invoice.Customer.AddressPostCode; var bags = db.vwDeliveryNoteCategoriesByBagSeals.Where(b => b.InvoiceId == Id).ToList(); if (bags.Count == 0) return; SealsRepeater.DataSource = bags; SealsRepeater.DataBind(); NumberOfBagsLabel.Text = bags.Count.ToString(); BarcodeLabel.ImageUrl = string.Format("/Handlers/BarcodeHandler.ashx?type=Invoice&value={0}", Id); //BarcodeLabel.ImageUrl = string.Format("/Handlers/BarcodeHandler.ashx?type=Dispatch&value={0}", dispatchId); } } private void LoadFromDispatch() { using (var db = new DataModel()) { //var dispatch = db.Dispatches.FirstOrDefault(f => f.DispatchId == Id && f.Invoice.CustomerId == CustomerId); var dispatch = db.Dispatches.FirstOrDefault(f => f.DeliveryId == Id && f.Invoice.CustomerId == CustomerId); if (dispatch == null) return; var customer = db.Customers.Where(x => x.CustomerId == CustomerId).FirstOrDefault(); var company = db.Companies.Where(x => x.CompanyID == customer.CompanyID).FirstOrDefault(); CompanyAddressLabel.Text = string.Format("{0} / {1}", company.CompanyAddress, company.CompanyPhone); CompanyEmailLabel.Text = string.Format("Email: {0}", company.CompanyEmail); CompanyVATNumberLabel.Text = string.Format("VAT Number: {0}", company.CompanyVATNumber); //20180119 - Added user who did the Pickup next to the Pre-list number - maanie var operatorAuthoriseId = dispatch.Invoice.Workload.OperatorAuthoriseId; var pickupOperator = db.OperatorLogins.Where(o => o.OperatorLoginId == operatorAuthoriseId).Select(s => s.Username).FirstOrDefault(); //08-07-2016 - Added prelist number - maanie PrelistLabel.Text = string.IsNullOrEmpty(dispatch.Invoice.Workload.Reference) ? dispatch.Invoice.Workload.WorkloadId.ToString() : dispatch.Invoice.Workload.Reference; PrelistLabel.Text = PrelistLabel.Text + " / " + pickupOperator.ToString(); //DispatchIdLabel.Text = dispatch.Invoice.InvoiceId.ToString().PadLeft(4, '0'); DispatchIdLabel.Text = Id.ToString(); CustomerName.Text = dispatch.Invoice.Customer.Name; DateLabel.Text += @"   " + dispatch.Invoice.Workload.DateCreated.ToShortDateString(); //TimeLabel.Text += @"   " + dispatch.Invoice.Workload.DateCreated.ToShortTimeString(); TimeLabel.Text += @"   " + DateTime.Now.ToShortTimeString(); //20161012 - use current time instead - maanie CustomerAddressLine1.Text = dispatch.Invoice.Customer.AddressLine1; CustomerAddressLine2.Text = dispatch.Invoice.Customer.AddressLine2; CustomerAddressCity.Text = dispatch.Invoice.Customer.AddressCity; CustomerAddressPostCode.Text = dispatch.Invoice.Customer.AddressPostCode; //var bags = db.vwDeliveryNoteCategoriesByBagSeals.Where(b => b.DispatchId == Id).ToList(); var bags = db.vwDeliveryNoteCategoriesByBagSeal2.Where(b => b.DeliveryId == Id).ToList(); if (bags.Count == 0) return; SealsRepeater.DataSource = bags; SealsRepeater.DataBind(); NumberOfBagsLabel.Text = bags.Count.ToString(); //20250318 - Modified barcode generation to include Pastel code for dispatch barcodes //20250805 - Modified barcode to use Prelist number instead of Delivery ID // Get the prelist number (workload reference or workload ID) var prelistNumber = string.IsNullOrEmpty(dispatch.Invoice.Workload.Reference) ? dispatch.Invoice.Workload.WorkloadId.ToString() : dispatch.Invoice.Workload.Reference; // Create barcode value: "Client name - Prelist number" string barcodeValue = prelistNumber; // Generate barcode using the new value BarcodeLabel.ImageUrl = string.Format("/Handlers/BarcodeHandler.ashx?type=Dispatch&value={0}&customText={1}", Id, HttpUtility.UrlEncode(barcodeValue)); // Set the barcode text label with the same value BarcodeTextLabel.Text = barcodeValue; } } //20181108 - added bag contents with quantities - maanie protected void OnItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e) { using (var db = new DataModel()) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { var dispatchId = Convert.ToInt32(DataBinder.Eval(e.Item.DataItem, "DispatchId")); var contents = db.vwDispatchBagPackageContents.Where(b => b.DispatchId == dispatchId).ToList(); Repeater rptContents = e.Item.FindControl("ContentsRepeater") as Repeater; rptContents.DataSource = contents; rptContents.DataBind(); } } } }