public async Task <IActionResult> Post([FromBody] GarmentTypeModel model) { if (ModelState.IsValid) { model = await _garmentTypesBusiness.UpdateGarmentType(model); return(Ok(model)); } return(BadRequest(ModelState.ValidationState)); }
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)); }