/// <summary> /// The Consolidate method will implemented all the logic to group orders under some criteria for retrieve a list of shipments updated /// </summary> /// <returns>The <see cref="IList{ShipmentDTO}"/></returns> public IList <ShipmentDTO> Consolidate() { var list = _orderRepo.GetAll(); var grouped = list.GroupBy(x => x.DestinationState); var ids = 10; var shipmentList = new List <ShipmentDTO>(); foreach (var item in grouped) { item.ToList().ForEach(x => { totalWeigth += x.WeigthOrder; }); var shipment = new ShipmentDTO() { IdShipment = ids++, Orders = Converters.Converter.Cast(item.ToList()), Quantity = item.ToList().Count, TotalWeigthOrders = totalWeigth }; shipmentList.Add(shipment); totalWeigth = 0; } _shipmentRepo.AddList(Converters.Converter.Cast(shipmentList)); return(shipmentList); }
/// <summary> /// The Build method will do the logic to group all the orders and retrieve a list of loads /// </summary> /// <returns>The <see cref="IList{LoadDTO}"/></returns> public IList <LoadDTO> Build() { var shipments = _shipmentRepo.GetAll(); var group = shipments.GroupBy(x => x.TotalWeigthOrders).Where(s => s.Key <= 2800); var list = new List <LoadDB>(); foreach (var item in group) { item.ToList().ForEach(x => x.Orders.ToList().ForEach(z => { x.IdLoad = _ids; z.IdLoad = _ids; z.Status = "Loaded"; stops.Append(z.DestinationCity).Append(","); _totalCost += z.CostOrder; _orderRepo.Update(z.IdOrder, z); _shipmentRepo.Update(x.IdShipment, x); })); var newObj = new LoadDB() { IdLoad = _ids, TotalDistanceLoad = _distance + 500, StopsLoad = stops.ToString(), TruckLoad = _truck, Shipments = item.ToList(), QuantityShipmentsLoad = item.ToList().Count, TotalCostLoad = _totalCost }; list.Add(newObj); stops = new StringBuilder(); _totalCost = 0; _ids++; } _loadRepo.AddList(list); return(Converters.Converter.Cast(list)); }
/// <summary> /// 设置用户角色 /// </summary> /// <param name="roleids"></param> public void SetRoles(string[] roleids, string userid) { //清空 var persists = GetListByUserId(userid); var ids = persists.Select(s => s.roleid).ToList(); _data.RemoveList <UserRole>(ids); //增加 if (roleids != null && roleids.Length > 0) { var list = new List <UserRole>(); foreach (var id in roleids) { var item = new UserRole() { Id = Guid.NewGuid().ToString(), userid = userid, roleid = id }; list.Add(item); } _data.AddList <UserRole>(list); //更新MYSQL _cachce.SetList(list); //同步缓存 } }