public ActionResult Edit(TravelRequestView travelRequestvm)
        {
            if (ModelState.IsValid)
            {
                var travelRequest = _db.TravelRequests.Find(travelRequestvm.Id);
                if (travelRequest != null)
                {
                    var TRstatuses = _db.TravelRequestStatus.ToList();
                    travelRequest.TravelRequestStatu = TRstatuses.FirstOrDefault(t => t.Status == travelRequestvm.TRStatus);

                    var currencies = _db.Currencies.ToList();
                    travelRequest.Currency  = currencies.FirstOrDefault(t => t.CurrencyName == travelRequestvm.FlightCostCurrency);
                    travelRequest.Currency2 = currencies.FirstOrDefault(t => t.CurrencyName == travelRequestvm.FlightCost2Currency);
                    travelRequest.Currency1 = currencies.FirstOrDefault(t => t.CurrencyName == travelRequestvm.HotelCostCurrency);

                    var statuses = _db.TRItemsStatus.ToList();
                    var s1       = statuses.FirstOrDefault(s => s.Status == travelRequestvm.VisaStatus);
                    if (s1 != null)
                    {
                        travelRequest.VisaStatus = s1.Id;
                    }
                    var s2 = statuses.FirstOrDefault(s => s.Status == travelRequestvm.HotelStatus);
                    if (s2 != null)
                    {
                        travelRequest.HotelStatus = s2.Id;
                    }
                    var s3 = statuses.FirstOrDefault(s => s.Status == travelRequestvm.FlightStatus);
                    if (s3 != null)
                    {
                        travelRequest.FlightStatus = s3.Id;
                    }
                    var s4 = statuses.FirstOrDefault(s => s.Status == travelRequestvm.HRLetterStatus);
                    if (s4 != null)
                    {
                        travelRequest.HRLetterStatus = s4.Id;
                    }

                    travelRequest.TotalFlightCost   = travelRequestvm.FlightCost;
                    travelRequest.TotalFlightCost2  = travelRequestvm.FlightCost2;
                    travelRequest.TotalHotelCost    = travelRequestvm.HotelCost;
                    travelRequest.OperationsNotes   = travelRequestvm.OperationsNotes;
                    travelRequest.TotalReissueCost  = travelRequestvm.ReissueCost;
                    travelRequest.TotalReissueCost2 = travelRequestvm.ReissueCost2;
                    travelRequest.TotalReissueCost3 = travelRequestvm.ReissueCost3;
                    travelRequest.FlightRefundCost  = travelRequestvm.FlightRefund;

                    if (travelRequestvm.FlightInvoiceStatus != null)
                    {
                        travelRequest.FlightInvoiceStatus = travelRequestvm.FlightInvoiceStatus == "Invoiced" ? 1 : 0;
                    }
                    else
                    {
                        travelRequest.FlightInvoiceStatus = null;
                    }

                    if (travelRequestvm.FlightInvoiceStatus2 != null)
                    {
                        travelRequest.FlightInvoiceStatus2 = travelRequestvm.FlightInvoiceStatus2 == "Invoiced" ? 1 : 0;
                    }
                    else
                    {
                        travelRequest.FlightInvoiceStatus2 = null;
                    }

                    if (travelRequestvm.ReissueInvoiceStatus != null)
                    {
                        travelRequest.TotalReissueStatus = travelRequestvm.ReissueInvoiceStatus == "Invoiced" ? 1 : 0;
                    }
                    else
                    {
                        travelRequest.TotalReissueStatus = null;
                    }

                    if (travelRequestvm.ReissueInvoiceStatus2 != null)
                    {
                        travelRequest.TotalReissueStatus2 = travelRequestvm.ReissueInvoiceStatus2 == "Invoiced" ? 1 : 0;
                    }
                    else
                    {
                        travelRequest.TotalReissueStatus2 = null;
                    }

                    if (travelRequestvm.ReissueInvoiceStatus3 != null)
                    {
                        travelRequest.TotalReissueStatus3 = travelRequestvm.ReissueInvoiceStatus3 == "Invoiced" ? 1 : 0;
                    }
                    else
                    {
                        travelRequest.TotalReissueStatus3 = null;
                    }

                    if (travelRequestvm.HotelInvoiceStatus != null)
                    {
                        travelRequest.HoteInvoiceStatus = travelRequestvm.HotelInvoiceStatus == "Invoiced" ? 1 : 0;
                    }
                    else
                    {
                        travelRequest.HoteInvoiceStatus = null;
                    }

                    if (travelRequestvm.VisaInvoiceStatus != null)
                    {
                        travelRequest.VisaInvoiceStatus = travelRequestvm.VisaInvoiceStatus == "Invoiced" ? 1 : 0;
                    }
                    else
                    {
                        travelRequest.VisaInvoiceStatus = null;
                    }

                    if (travelRequestvm.FlightRefundInvoiceStatus != null)
                    {
                        travelRequest.FlightRefundInvoiceStatus = travelRequestvm.FlightRefundInvoiceStatus == "Invoiced" ? 1 : 0;
                    }
                    else
                    {
                        travelRequest.FlightRefundInvoiceStatus = null;
                    }

                    _db.SaveChanges();
                    return(RedirectToAction("Index"));
                }
            }

            return(View(travelRequestvm));
        }
        public TravelRequestView SetTRvmFields(TravelRequest travelRequest, Trip trip,
                                               Dictionary <int, string> statusesDic)
        {
            var tRvm = new TravelRequestView
            {
                Id              = travelRequest.TRID,
                TRStatus        = travelRequest.TravelRequestStatu.Status,
                FlightCost      = travelRequest.TotalFlightCost,
                FlightCost2     = travelRequest.TotalFlightCost2,
                ReissueCost     = travelRequest.TotalReissueCost,
                ReissueCost2    = travelRequest.TotalReissueCost2,
                ReissueCost3    = travelRequest.TotalReissueCost3,
                FlightRefund    = travelRequest.FlightRefundCost,
                HotelCost       = travelRequest.TotalHotelCost,
                RequesterNotes  = travelRequest.RequesterNotes,
                OperationsNotes = travelRequest.OperationsNotes,
                TripType        = trip.Business != null && (bool)trip.Business ? "Business" : "Training",
                EmployeeName    = trip.Employee.contact.FullName,
                StartDate       = trip.StartDate,
                EndDate         = trip.EndDate,
                NumOfDays       = trip.NumberofDays,
                WorkingDays     = trip.NumberofWorkingDays,
                ModifiedOn      = trip.ModifiedOn,
                IsCanceled      = trip.IsCanceled,
                Routes          = trip.Routes.ToList()[0].City.Name
            };

            for (var i = 1; i < trip.Routes.Count; i++)
            {
                tRvm.Routes += ',' + trip.Routes.ToList()[i].City.Name;
            }
            if (travelRequest.FlightStatus != null)
            {
                if (statusesDic.ContainsKey((int)travelRequest.FlightStatus))
                {
                    tRvm.FlightStatus = statusesDic[(int)travelRequest.FlightStatus];
                }
            }
            if (travelRequest.HotelStatus != null)
            {
                if (statusesDic.ContainsKey((int)travelRequest.HotelStatus))
                {
                    tRvm.HotelStatus = statusesDic[(int)travelRequest.HotelStatus];
                }
            }
            if (travelRequest.VisaStatus != null)
            {
                if (statusesDic.ContainsKey((int)travelRequest.VisaStatus))
                {
                    tRvm.VisaStatus = statusesDic[(int)travelRequest.VisaStatus];
                }
            }
            if (travelRequest.HRLetterStatus != null)
            {
                if (statusesDic.ContainsKey((int)travelRequest.HRLetterStatus))
                {
                    tRvm.HRLetterStatus = statusesDic[(int)travelRequest.HRLetterStatus];
                }
            }
            if (travelRequest.Currency != null)
            {
                tRvm.FlightCostCurrency = travelRequest.Currency.CurrencyName;
            }
            if (travelRequest.Currency2 != null)
            {
                tRvm.FlightCost2Currency = travelRequest.Currency2.CurrencyName;
            }
            if (travelRequest.Currency1 != null)
            {
                tRvm.HotelCostCurrency = travelRequest.Currency1.CurrencyName;
            }

            if (travelRequest.FlightInvoiceStatus != null)
            {
                tRvm.FlightInvoiceStatus = travelRequest.FlightInvoiceStatus == 0 ? "Not Invoiced" : "Invoiced";
            }
            if (travelRequest.FlightInvoiceStatus2 != null)
            {
                tRvm.FlightInvoiceStatus2 = travelRequest.FlightInvoiceStatus2 == 0 ? "Not Invoiced" : "Invoiced";
            }
            if (travelRequest.FlightRefundInvoiceStatus != null)
            {
                tRvm.FlightRefundInvoiceStatus = travelRequest.FlightRefundInvoiceStatus == 0 ? "Not Invoiced" : "Invoiced";
            }
            if (travelRequest.HoteInvoiceStatus != null)
            {
                tRvm.HotelInvoiceStatus = travelRequest.HoteInvoiceStatus == 0 ? "Not Invoiced" : "Invoiced";
            }
            if (travelRequest.VisaInvoiceStatus != null)
            {
                tRvm.VisaInvoiceStatus = travelRequest.VisaInvoiceStatus == 0 ? "Not Invoiced" : "Invoiced";
            }
            if (travelRequest.TotalReissueStatus != null)
            {
                tRvm.ReissueInvoiceStatus = travelRequest.TotalReissueStatus == 0 ? "Not Invoiced" : "Invoiced";
            }
            if (travelRequest.TotalReissueStatus2 != null)
            {
                tRvm.ReissueInvoiceStatus2 = travelRequest.TotalReissueStatus2 == 0 ? "Not Invoiced" : "Invoiced";
            }
            if (travelRequest.TotalReissueStatus3 != null)
            {
                tRvm.ReissueInvoiceStatus3 = travelRequest.TotalReissueStatus3 == 0 ? "Not Invoiced" : "Invoiced";
            }

            return(tRvm);
        }