public ActionResult DeleteWorkOrderItem(LaborPartsModel model) { var workOrderItemId = model.WorkOrderItem; var workOrder = repository.SearchFor <SageWorkOrder>(x => x.WorkOrder == model.WorkOrder).SingleOrDefault(); if (workOrder == null) { return(Error("WorkOrder doesn't exists", $"There is no workorders with id {model.WorkOrder}. workOrder==null")); } var item = workOrder.WorkOrderItems.SingleOrDefault(x => x.WorkOrderItem == workOrderItemId); var dBworkOrderItems = workOrder.WorkOrderItems.ToList(); var result = sageApiProxy.DeleteWorkOrderItems(model.WorkOrder, new List <long> { model.WorkOrderItem }); if (result != null && result.IsSucceed) { dBworkOrderItems.Remove(item); workOrder.WorkOrderItems = dBworkOrderItems; repository.Update(workOrder); _hub.UpdateSageWorkOrder(workOrder); } else { _log.ErrorFormat("Was not able to update workorderItem to sage. !result.IsSucceed"); return(Error("Was not able to update workorderItem to sage", $"DeleteWorkOrderItems method IsSucceed==false. {(result != null ? result.ErrorMassage : string.Empty)}")); } return(Json(Success(), JsonRequestBehavior.AllowGet)); }
private void ResolveWorkOrderItems(WorkOrderModel model) { var workOrderItems = Mapper.Map <IEnumerable <SageWorkOrderItem> >(model.PartsAndLabors); var workOrderFromMongo = _repository.SearchFor <SageWorkOrder>(x => x.WorkOrder == model.WorkOrder).Single(); if (workOrderItems != null) { foreach (var workOrderItem in workOrderItems) { if ((workOrderFromMongo.WorkOrderItems != null && workOrderFromMongo.WorkOrderItems.Contains(workOrderItem))) { _sageApiProxy.EditWorkOrderItem(workOrderItem); } else { workOrderItem.WorkOrder = Convert.ToInt32(model.WorkOrder); workOrderItem.TotalSale = workOrderItem.Quantity * workOrderItem.UnitSale; if (workOrderItem.ItemType == "Parts") { workOrderItem.PartsSale = workOrderItem.UnitSale; } else { workOrderItem.LaborSale = workOrderItem.UnitSale; } if (workOrderItem.WorkOrderItem == 0) { _sageApiProxy.AddWorkOrderItem(workOrderItem); } else { _sageApiProxy.EditWorkOrderItem(workOrderItem); } } } if (workOrderFromMongo.WorkOrderItems != null) { var idsToRemove = new List <long>(); foreach (var woItem in workOrderFromMongo.WorkOrderItems) { if (!workOrderItems.Select(x => x.WorkOrderItem).Contains(woItem.WorkOrderItem)) { idsToRemove.Add(woItem.WorkOrderItem); } } if (idsToRemove.Any()) { _sageApiProxy.DeleteWorkOrderItems(Convert.ToInt32(workOrderFromMongo.WorkOrder), idsToRemove); } } } else { if (workOrderFromMongo.WorkOrderItems != null) { var idsToRemove = workOrderFromMongo.WorkOrderItems.Select(x => x.WorkOrderItem); if (idsToRemove.Any()) { _sageApiProxy.DeleteWorkOrderItems(Convert.ToInt32(workOrderFromMongo.WorkOrder), idsToRemove); } } } }