using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using Common;
using System.Collections.Specialized;
public partial class Pickups_InventoryControl : UserControl
{
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;
var customerLogin = db.GetCustomerLoginFromGuid(HttpContext.Current.User.Identity.Name).FirstOrDefault();
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();
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 (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())
{
var customerLogin = db.GetCustomerLoginFromGuid(HttpContext.Current.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));
HttpContext.Current.Trace.Warn("PickupType.SelectedItem.Value", PickupType.SelectedItem.Value);
HttpContext.Current.Trace.Warn("PickupType.SelectedValue", PickupType.SelectedValue);
var workload = db.CreateWorkload(customerLogin.CustomerLoginId, int.Parse(PickupType.SelectedValue), workloadItems.TrimEnd(',')).FirstOrDefault();
if (workload == null) return;
Response.Redirect(string.Format("/Pickups/BagLabels/{0}", workload.WorkloadId), true);
}
}
}