public ActionResult PickTickets() { var consigmentVms = new List <ConsigmentVm>(); var consignments = Db.Assignments .Include(x => x.Drivers) .Include(x => x.Vehicle) .ToList();//.Where(x => x.CreatedBy == LoggedInUser.Id) foreach (var consignment in consignments) { var order = Db.Orders.FirstOrDefault(x => x.Id == consignment.OrderId); var consigmentVm = new ConsigmentVm() { Id = consignment.Id, LegDate = consignment.CreatedAt.ToString(), OrderId = consignment.OrderId?.ToString(), OrderNumber = order.OrderNumber, ConsignmentNumber = consignment.AssignmentNumber, DriverName = String.Join(",", consignment.Drivers.Select(x => x.Name).ToList()), VehicleName = consignment.Vehicle?.Name, }; consigmentVms.Add(consigmentVm); } return(View(consigmentVms)); }
// GET: New public ActionResult New() { ConsigmentVm model = new ConsigmentVm() { Id = Guid.NewGuid(), }; ViewBag.Warehouses = new SelectList(WarehousesList, "Value", "Text"); ViewBag.Vehicles = new SelectList(VehiclesList, "Value", "Text"); ViewBag.Drivers = new SelectList(DriversList, "Value", "Text"); ViewBag.Orders = new SelectList(OrdersList, "Value", "Text"); return(View(model)); }
public ActionResult Index() { var consigmentVms = new List <ConsigmentVm>(); var consignments = Db.Assignments .Include(x => x.Leg) .Include(x => x.Drivers) .Include(x => x.Vehicle) .Include(x => x.Statuses) .ToList();//.Where(x => x.CreatedBy == LoggedInUser.Id) foreach (var consignment in consignments) { var order = Db.Orders.Include(x => x.Pianos).FirstOrDefault(x => x.Id == consignment.OrderId); var consigmentVm = new ConsigmentVm() { Id = consignment.Id, LegDate = consignment.Leg.LegDate?.ToString(StringConstants.DateFormatSlashes), OrderId = consignment.OrderId?.ToString(), OrderNumber = order.OrderNumber, ConsignmentNumber = consignment.AssignmentNumber, DriverName = String.Join(",", consignment.Drivers.Select(x => x.Name).ToList()), VehicleName = consignment.Vehicle?.Name, TripStatus = consignment.Statuses.Count == 0 ? TripStatusEnum.NotStarted.ToString() : ((TripStatusEnum)(consignment.Statuses.OrderByDescending(x => x.CreatedAt).FirstOrDefault().Status)).ToString(), StartTime = consignment.StartTime?.ToString(), EstimatedTime = consignment.EstimatedTime?.ToString() }; foreach (var status in consignment.Statuses.OrderByDescending(x => x.CreatedAt)) { consigmentVm.Statuses.Add(new StatusVm() { Status = ((TripStatusEnum)status.Status).ToString(), StatusBy = status.StatusBy, StatusTime = status.StatusTime.ToString(), Comments = status.Comments }); } consigmentVms.Add(consigmentVm); } return(View(consigmentVms)); }
public ActionResult Save(ConsigmentVm conVm) { //SetupLoggedInUser("test.user"); if (ModelState.IsValid) { ViewBag.Warehouses = new SelectList(WarehousesList, "Value", "Text"); ViewBag.Vehicles = new SelectList(VehiclesList, "Value", "Text"); ViewBag.Drivers = new SelectList(DriversList, "Value", "Text"); ViewBag.Orders = new SelectList(OrdersList, "Value", "Text"); try { var order = Db.Orders .Include(x => x.Pianos) .Include(x => x.Legs) .Include(x => x.Assignments) .FirstOrDefault(x => x.Id == conVm.Orders); if (order.Assignments.Count > 0) { throw new Exception(" Assignment already done."); } // Save Piano Statuses foreach (var piano in order.Pianos) { Db.PianoStatuses.Add(new PianoStatus() { Id = Guid.NewGuid(), PianoId = piano.Id, CreatedAt = DateTime.Now, Status = (int)PianoStatusEnum.Booked, StatusTime = DateTime.Now, StatusBy = LoggedInUser?.UserName }); } Db.SaveChanges(); // Legs var legs = order.Legs.OrderBy(x => x.LegNumber).ToList(); string assignmentNumber = $"CON-{order.OrderNumber}"; foreach (var l in order.Legs) { var leg = GetLeg(Db, l.Id); if (legs.Count > 1) { assignmentNumber = $"CON-{order.OrderNumber}/{leg.LegNumber}"; } Assignment assignment = new Assignment() { //Id = conVm.Orders.Value, // Needs to be same as orderId to maintain 1 vs 1 realtion integrity Id = leg.Id, CreatedAt = DateTime.Now, CreatedBy = LoggedInUser?.UserName, OrderId = conVm.Orders, VehicleId = conVm.Vehicles, AssignmentNumber = assignmentNumber, LegId = leg.Id }; conVm.Drivers.ForEach(x => { assignment.Drivers.Add(Db.Drivers.FirstOrDefault(y => y.Id == x.Value)); }); order.Assignments.Add(assignment); Db.SaveChanges(); int odr = 1; var paths = JsonConvert.DeserializeObject <ConsignmentRouteVm[]>(conVm.Paths); foreach (var path in paths) { Db.AssignmentRoutes.Add(new AssignmentRoute() { Id = Guid.NewGuid(), CreatedAt = DateTime.Now, AssignmentId = assignment.Id, Order = odr, Lat = path.Lat, Lng = path.Lng }); odr++; } Db.SaveChanges(); // Save Trip Statuses Db.TripStatuses.Add(new TripStatus() { Id = Guid.NewGuid(), AssignmentId = assignment.Id, CreatedAt = DateTime.Now, Status = (int)TripStatusEnum.NotStarted, StatusTime = DateTime.Now, StatusBy = LoggedInUser?.UserName }); Db.SaveChanges(); } //else //{ // assignment = Db.Assignments // .Include(x => x.Route) // .Include(x => x.Drivers) // .FirstOrDefault(x => x.Id == order.AssignmentId); // assignment.OrderId = conVm.Orders; // assignment.VehicleId = conVm.Vehicles; // assignment.AssignmentNumber = "CN-" + order.OrderNumber; // Db.SaveChanges(); // assignment.Drivers.ToList().ForEach(x => { // assignment.Drivers.Remove(Db.Drivers.FirstOrDefault(y => y.Id == x.Id)); // }); // Db.SaveChanges(); // conVm.Drivers.ForEach(x => { // assignment.Drivers.Add(Db.Drivers.FirstOrDefault(y => y.Id == x.Value)); // }); // assignment.Route.ToList().ForEach(x => { // assignment.Route.Remove(Db.AssignmentRoutes.FirstOrDefault(y => y.Id == x.Id)); // }); // Db.SaveChanges(); // int odr = 1; // var paths = JsonConvert.DeserializeObject<ConsignmentRouteVm[]>(conVm.Paths); // foreach (var path in paths) // { // Db.AssignmentRoutes.Add(new AssignmentRoute() // { // Id = Guid.NewGuid(), // CreatedAt = DateTime.Now, // AssignmentId = assignment.Id, // Order = odr, // Lat = path.Lat, // Lng = path.Lng // }); // odr++; // } // Db.SaveChanges(); //} //var consignmentDrivers = Db.Assignments // .Include(x => x.Drivers) // .Where(x => x.Id == assignment.Id); //consignmentDrivers.Drivers.ToList().ForEach(x => //{ // BackgroundJob.Enqueue(() => FCMUitlity.SendConsignment(x.FCMToken, assignment.Id.ToString(), assignment.AssignmentNumber)); //}); TempData["Success"] = $"Assignment #: {order.OrderNumber} has been saved sucessfully."; return(RedirectToAction("Index")); } catch (Exception ex) { TempData["Error"] = "This is error while creating assignment." + ex.Message; return(RedirectToAction("Index")); } } return(View(conVm)); }