示例#1
0
        public override ActionResult Edit(object id)
        {
            return(DataAccess.Work().Get(() =>
            {
                id = CastId(id);
                var model = Repository.Get(id);
                if (model == null)
                {
                    return (ActionResult)HttpNotFound();
                }
                var viewModel = ModelToViewModel(model);

                int vehicleId = viewModel.IdFlatWagon ?? viewModel.IdFlatbedTruck ?? viewModel.IdFlatSemiTrailer ?? 0;
                if (vehicleId != 0)
                {
                    viewModel.IsoContainer1Mask = GetIsoMask(viewModel.VehicleType, vehicleId);
                }

                // Загружаем прицепы
                TrailerRep.SetParent(model);
                viewModel.Trailers = TrailerRep.Query.AsEnumerable().Select(Mapper.Map <VehicleTrailerModel>).ToList();

                return View(EditName, viewModel);
            }));
        }
示例#2
0
        public override ActionResult PostEdit([ModelBinder(typeof(VehicleTrailerBinder))] VehicleModel viewModel)
        {
            return(DataAccess.Work().Get(() =>
            {
                TypeDescriptor
                .GetProperties(viewModel)
                .Cast <PropertyDescriptor>()
                .Where(p => p.HasAttribute <VehicleTypeAttribute>())
                .Select(p => new { Property = p, Attribute = p.Attributes <VehicleTypeAttribute>().First() })
                .Where(x => (x.Attribute.VehicleType & (VehicleType)viewModel.VehicleType) == 0)
                .ToList()
                .ForEach(x =>
                {
                    x.Property.SetValue(viewModel, null);
                });

                if (ModelState.IsValid)
                {
                    IList <VehicleTrailerModel> trailers = new List <VehicleTrailerModel>();

                    var model = ViewModelToModel(viewModel);

                    TrailerRep.SetParent(model);

                    TrailerRep.DeleteAll();

                    foreach (var item in viewModel.Trailers)
                    {
                        var trailer = TrailerRep.Create();
                        Mapper.Map(item, trailer);
                        TrailerRep.Save(trailer);
                        Mapper.Map(trailer, item);
                        trailers.Add(item);
                    }

                    Repository.Update(model);
                    viewModel = ModelToViewModel(model);

                    viewModel.Trailers = trailers;
                }

                return View(EditName, viewModel);
            }));
        }
示例#3
0
        public override ActionResult PostCreate([ModelBinder(typeof(VehicleTrailerBinder))] VehicleModel viewModel)
        {
            return(DataAccess.Work().Get(() =>
            {
                if (ModelState.IsValid)
                {
                    var trailers = viewModel.Trailers;
                    var model = ViewModelToModel(viewModel);
                    Repository.Save(model);
                    viewModel = ModelToViewModel(model);

                    TrailerRep.SetParent(viewModel.Id);
                    foreach (var item in trailers)
                    {
                        var trailer = TrailerRep.Create();
                        Mapper.Map(item, trailer);
                        TrailerRep.Save(trailer);
                        Mapper.Map(trailer, item);
                        viewModel.Trailers.Add(item);
                    }
                }
                return View(CreateName, viewModel);
            }));
        }