using System; using System.Collections.Generic; using System.Collections.Specialized; using System.Linq; using System.Web; using System.Web.UI; using Common; //2016-10-20 - Add a check to prevent duplicate prelist numbers from being entered - maanie //20180118 - set input mask on Reference (8 digits only) and added user authorisation - maanie //20180118 - addded user dropdown - maanie //20180118 - Add validation on the “Update / Add Bag Labels” button to check user authorisation password. - maanie //20181112 - save total bags - maanie public partial class Root_Pickup : Page { private int workloadId; public string ReadOnlyIndicator = string.Empty; public string HiddenIndicator = "hidden"; protected void Page_Load(object sender, EventArgs e) { header.InnerHtml = "New Pickup"; if (IsPostBack) return; LoadInventory(); } private void LoadInventory() { if (Page.RouteData.Values["id"] != null && (string)Page.RouteData.Values["id"] != "new") int.TryParse((string)Page.RouteData.Values["id"], out workloadId); using (var db = new DataModel()) { PickupType.Attributes["onchange"] = "PickupType_onchange();"; var action = Request.Url.ToString().Contains("pickups/view") ? "view" : Request.Url.ToString().Contains("pickups/update") ? "update" : Request.Url.ToString().Contains("pickups/new") ? "new" : string.Empty; ReadOnlyIndicator = string.Empty; Trace.Warn("User.Identity.Name", User.Identity.Name); var customerLogin = db.GetCustomerLoginFromGuid(User.Identity.Name).FirstOrDefault(); //var customerLogin = db.GetCustomerLoginFromGuid("1259D1F7-6677-4F8E-8861-364025322BD8").FirstOrDefault(); // ADD BACK AFETR TESTING ->>> if (customerLogin == null) return; var openPickupTypes = db.Workloads.Where(w => w.CustomerId == customerLogin.CustomerId && w.WorkloadStatusId == 1).Select(s => s.WorkloadTypeId).Distinct().ToList(); PickupType.DataSource = action == "update" && workloadId > 0 ? db.WorkloadTypes.Where(w => w.CanStartCycle).ToList() : db.WorkloadTypes.Where(w => w.CanStartCycle && !openPickupTypes.Contains(w.WorkloadTypeId)).ToList(); PickupType.DataBind(); //20180118 - addded user dropdown - maanie Username.DataSource = db.OperatorLogins.ToList(); Username.DataBind(); header.InnerHtml = action == "update" && workloadId > 0 ? "Update Pickup" : "New Pickup"; Trace.Warn("action", action); //switch (action) //{ // case "update": // case "new": var updateInventory = db.GetCustomerInventoryByCustomerIdWorkloadId(customerLogin.CustomerId, workloadId).ToList(); var workload = db.Workloads.FirstOrDefault(w => w.WorkloadId == workloadId); // = db.Workloads.Where(c => c.CustomerId == customerLogin.CustomerId && c.WorkloadStatusId == 1).FirstOrDefault(); Trace.Warn("updateInventory.Count", updateInventory.Count.ToString()); if (workload != null && !string.IsNullOrEmpty(workload.Reference)) WorkloadReference.Text = workload.Reference; //20181112 - save total bags - maanie if (workload != null && workload.TotalBags != null) TotalBags.Text = workload.TotalBags.ToString(); if (updateInventory.Count == 0) return; if (action == "update" && workload != null) PickupType.Items.FindByValue(workload.WorkloadTypeId.ToString()).Selected = true; PickupType.Enabled = action == "new"; var laundry = updateInventory.Where(g => g.Category == "Laundry").ToList(); var linen = updateInventory.Where(g => g.Category == "Linen").ToList(); var fnb = updateInventory.Where(g => g.Category == "Food and Bev").ToList(); Trace.Warn("laundry.Count", laundry.Count.ToString()); Trace.Warn("linen.Count", linen.Count.ToString()); Trace.Warn("fnb.Count", fnb.Count.ToString()); LaundryRepeater.DataSource = laundry; LaundryRepeater.DataBind(); LinenRepeater.DataSource = linen; LinenRepeater.DataBind(); FNBRepeater.DataSource = fnb; FNBRepeater.DataBind(); //return; //} if (action != "view" || workloadId == 0) return; header.InnerHtml = "View Pickup"; ReadOnlyIndicator = "disabled=\"true\""; SubmitButton.Visible = false; PickupType.Attributes.Add("disabled", "true"); HiddenIndicator = string.Empty; } } public string ShowCustomerCount(object o) { if (o is vwCustomerInventory) return string.Empty; //if (o is WorkloadCustomerInventory) return ((WorkloadCustomerInventory)o).Count; var result = o as GetWorkloadInventory_Result; Trace.Warn("result", string.Format("{0} = {1}", result == null, result == null ? 0 : result.Count)); if (result != null && result.Count != null) return result.Count.Value.ToString(); return string.Empty; } public string Variance(object o) { if (!(o is GetWorkloadInventory_Result)) return string.Empty; var w = (GetWorkloadInventory_Result)o; var variance = w.Count.Value - w.CustomerCount.Value; return variance == 0 ? variance.ToString() : variance > 0 ? string.Format("+{0}", variance) : string.Format("{0}", variance); } public string ShowOperatorCount(object o) { if (!(o is GetWorkloadInventory_Result)) return string.Empty; var w = (GetWorkloadInventory_Result)o; return w.CustomerCount != null ? w.CustomerCount.Value.ToString() : 0.ToString(); } private IEnumerable> QueryString(NameValueCollection q) { return (from string item in q select new KeyValuePair(item, q[item])).ToList(); } protected void SubmitButton_Click(object sender, EventArgs e) { using (var db = new DataModel()) { //20180119 - pad reference with leading zeros to 8 digits on submit - maanie string reference = WorkloadReference.Text.ToString().PadLeft(8, '0'); //2016-10-20 - Add a check to prevent duplicate prelist numbers from being entered - maanie var workloadReference = db.Workloads.Where(w => w.Reference == reference).FirstOrDefault(); if(workloadReference != null) { Label3.Text = "Reference already exists!"; return; } //20180118 - Add validation on the “Update / Add Bag Labels” button to check user authorisation password. - maanie if (string.IsNullOrEmpty(Username.Text) || string.IsNullOrEmpty(Password.Text)) { Label3.Text = "Please fill in both the username and password fields"; return; } var login = db.LoginOperator(Username.SelectedItem.Text, Password.Text).FirstOrDefault(); if (login == null) { Label3.Text = "Please fill in a valid username and password to authorise this pick up"; Password.Text = string.Empty; return; } var customerLogin = db.GetCustomerLoginFromGuid(User.Identity.Name).FirstOrDefault(); if (customerLogin == null) return; var workloadItems = QueryString(Request.Form).Where(t => t.Key.StartsWith("inv_") && t.Value != string.Empty).Aggregate(string.Empty, (current, item) => string.Format("{0}{1}={2},", current, item.Key.Substring(4), item.Value)); //20181112 - save total bags - maanie var workload = db.CreateWorkload(customerLogin.CustomerLoginId, int.Parse(PickupType.SelectedValue), workloadItems.TrimEnd(','), reference, int.Parse(TotalBags.Text)).FirstOrDefault(); if (workload == null) return; //save user who authorised Pickup var workloadAuthorise = db.Workloads.Where(w => w.WorkloadId == workload.WorkloadId).FirstOrDefault(); workloadAuthorise.OperatorAuthoriseId = login.OperatorLoginId; db.SaveChanges(); Response.Redirect(string.Format("/Pickups/BagLabels/{0}", workload.WorkloadId), true); } } }