コード例 #1
0
        public async Task <IActionResult> Post([FromBody] GarmentTypeModel model)
        {
            if (ModelState.IsValid)
            {
                model = await _garmentTypesBusiness.UpdateGarmentType(model);

                return(Ok(model));
            }
            return(BadRequest(ModelState.ValidationState));
        }
コード例 #2
0
        public async Task <GarmentTypeModel> UpdateGarmentType(GarmentTypeModel model)
        {
            var garmentType = await _ctx.GarmentTypes
                              .Include(gt => gt.GarmentMeasurementTypes)
                              .SingleOrDefaultAsync(gt => gt.GarmentTypeId == model.GarmentTypeId);

            if (garmentType == null)
            {
                garmentType = new GarmentType
                {
                    GarmentMeasurementTypes = new List <GarmentMeasurementType>()
                };
                _ctx.GarmentTypes.Add(garmentType);
            }
            _ctx.Entry(garmentType).CurrentValues.SetValues(model);
            //Mapper.Map(model, garmentType);

            var ids = model.GarmentMeasurementTypes.Select(mt => mt.GarmentMeasurementTypeId).ToList();

            _ctx.GarmentMeasurementTypes.RemoveRange(garmentType.GarmentMeasurementTypes.Where(mt => !ids.Contains(mt.GarmentMeasurementTypeId)));

            foreach (var measurementTypeModel in model.GarmentMeasurementTypes)
            {
                if (measurementTypeModel.GarmentMeasurementTypeId == 0)
                {
                    // garmentType.GarmentMeasurementTypes.Add(Mapper.Map<GarmentMeasurementType>(measurementTypeModel));
                    garmentType.GarmentMeasurementTypes.Add(new GarmentMeasurementType
                    {
                        MeasurementTypeId = measurementTypeModel.MeasurementTypeId
                    });
                }
                else
                {
                    var mt = garmentType.GarmentMeasurementTypes.SingleOrDefault(t =>
                                                                                 t.GarmentMeasurementTypeId == measurementTypeModel.GarmentMeasurementTypeId);
                    if (mt != null)
                    {
                        _ctx.Entry(mt).CurrentValues.SetValues(measurementTypeModel);
                    }
                }
            }

            await _ctx.SaveChangesAsync();

            return(await GetGarmentType(garmentType.GarmentTypeId, true));
        }