public DetailViewModel CreateDetailViewModel(int shipId, string tripId, bool all)
        {
            var model = new DetailViewModel();
            model.Ship = db.Ships.Find(shipId);
            model.Journeys = db.Journeys.Where(p => p.ShipId == shipId).ToList();
            model.JourneySupervisions = db.JourneySuppervision.Where(p => p.ShipId == shipId && p.TripId == tripId).OrderByDescending(p => p.Id).ToList();
            model.Notes = db.Notes.Where(p => p.ShipId == shipId && p.TripId == tripId).OrderByDescending(p => p.NoteId).ToList();
            model.JourneyPlans = db.journeyPlans.Where(p => p.ShipId == shipId && p.TripId == tripId).OrderByDescending(p => p.JourneyPlanId).ToList();
            model.SelectedTripId = tripId;
            model.Ports = db.Ports.OrderBy(p => p.PortName).ToList();
            model.Tasks = db.Tasks.OrderBy(p => p.TaskName).ToList();
            model.States = db.States.OrderBy(p => p.StateName).ToList();
            model.Results = db.Results.Where(p => p.TripId == tripId && p.ShipId == shipId).ToList();
            foreach (var item in model.JourneySupervisions)
            {
                model.CreatedDates.Add(item.CreatedDate);
            }
            model.Ports.RemoveAll(p => p == null);
            model.Tasks.RemoveAll(p => p == null);
            model.CreatedDates.RemoveAll(p => p == null);
            model.States.RemoveAll(p => p == null);

            if (!all)
            {
                model.JourneySupervisions = model.JourneySupervisions.OrderByDescending(p => p.CreatedDate).Take(10).ToList();
            }
            return model;
        }
 public List<JourneySupervision> GetJourneySupervisionById(DetailViewModel model, string tripId, string start, string stop)
 {
     DateTime startTime = string.IsNullOrEmpty(start) ? DateTime.MinValue : DateTime.ParseExact(start, "dd/MM/yyyy", null);
     DateTime stopTime = string.IsNullOrEmpty(stop) ? DateTime.Now : DateTime.ParseExact(stop, "dd/MM/yyyy", null);
     var result = new List<JourneySupervision>();
     var temp = db.JourneySuppervision.Where(p => p.ShipId == model.Ship.ShipId && p.TripId == tripId &&
         (model.SelectedStateId == null || p.StateId == model.SelectedStateId) && (model.SelectedTaskId == null || p.TaskId == model.SelectedTaskId) &&
         (model.SelectedPortId == null || p.PortId == model.SelectedPortId) && (p.CreatedDate >= startTime && p.CreatedDate <= stopTime)).OrderByDescending(p => p.Id).ToList();
     if (model.SelectedTime != null && temp != null)
     {
         foreach (var item in temp)
         {
             if (item.CreatedDate.Value.Date == model.SelectedTime.Value.Date)
             {
                 result.Add(item);
             }
         }
     }
     else { result = temp; }
     return result;
 }
 public JsonResult RouteDetailFilter(DetailViewModel model, string tripId, string starttime, string stoptime)
 {
     var result = repository.GetJourneySupervisionById(model, tripId, starttime, stoptime);
     var times = repository.GetNoteByTime(model.Ship.ShipId, tripId, starttime, stoptime);
     var plans = repository.GetJourneyPlanByTime(model.Ship.ShipId, tripId, starttime, stoptime);
     var b = new List<object>();
     var ttime = new List<object>();
     var tplan = new List<object>();
     foreach (var item in result)
     {
         var a = new
         {
             TaskName = item.Task != null ? item.Task.TaskName : "",
             ArrangedWeight = item.ArrangedWeight,
             Date = item.CreatedDate.HasValue ? item.CreatedDate.Value.ToString("dd/MM/yyyy") : "",
             PortName = item.Port != null ? item.Port.PortName : "",
             Position = item.Position ?? "",
             RestWeight = item.RestWeight,
             CategoryName = item.CategoryName ?? "",
             StateName = item.State != null ? item.State.StateName : "",
             Time = item.CreatedDate.HasValue ? item.CreatedDate.Value.ToString("HH:mm") : "",
             id = item.Id,
             nationName = item.NationName,
             result = (item.StateId == ConstId.LoadingStateId || item.StateId == ConstId.LoadedStateId || item.StateId == ConstId.UnloadedStateId || item.StateId == ConstId.UnloadingStateId || item.StateId == ConstId.RefueledId) ? "Làm:" + item.ArrangedWeight + "      <span>Còn:" + (item.RestWeight) + "<span>" : ""
         };
         b.Add(a);
     }
     foreach (var item in times)
     {
         var a = new { createdDate = item.UpdateTime.HasValue ? item.UpdateTime.Value.ToString("dd/MM/yyyy") : "", note = item.NoteContent ?? "" };
         if (a.createdDate != "" || a.note != "")
         {
             ttime.Add(a);
         }
     }
     foreach (var item in plans)
     {
         string updateResult = "";
         string updateReson = "";
         string journeytime = "";
         var end = db.Results.FirstOrDefault(p => p.TripId == item.TripId && p.ShipId == item.ShipId && p.PlanId == item.PlanId);
         if (end != null)
         {
             updateResult = end.Remark;
             updateReson = end.Reson == null ? "" : end.Reson.ResonName;
             journeytime = end.JourneyDate.HasValue ? end.JourneyDate.Value.ToString("dd/MM/yyyy") : "";
         }
         var a = new
         {
             planId = item.PlanId ?? "",
             portName = item.Port == null ? "" : item.Port.PortName,
             createdDate = item.PlanTime.HasValue ? item.PlanTime.Value.ToString("dd/MM/yyyy") : "",
             planName = item.Plan.PlanName,
             ssresult = updateResult,
             reson = updateReson,
             journeyTime = journeytime,
             id = item.JourneyPlanId
         };
         if (a.createdDate != "" || a.planId != "" || a.portName != "")
         {
             tplan.Add(a);
         }
     }
     return Json(new { ar1 = b, ar2 = ttime, ar3 = tplan });
 }