public async Task <HttpResponseMessage> Put(FormDataCollection form)
        {
            var key   = Convert.ToString(form.Get("key"));
            var model = _uow.GetObjectByKey <P__EFMigrationsHistory>(key, true);

            if (model == null)
            {
                return(Request.CreateResponse(HttpStatusCode.Conflict, "Object not found"));
            }

            var viewModel = new P__EFMigrationsHistoryViewModel {
                MigrationId    = model.MigrationId,
                ProductVersion = model.ProductVersion
            };

            var values = JsonConvert.DeserializeObject <IDictionary>(form.Get("values"));

            PopulateViewModel(viewModel, values);

            Validate(viewModel);
            if (!ModelState.IsValid)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, GetFullErrorMessage(ModelState)));
            }

            CopyToModel(viewModel, model);

            await _uow.CommitChangesAsync();

            return(Request.CreateResponse(HttpStatusCode.OK));
        }
 private void PopulateViewModel(P__EFMigrationsHistoryViewModel viewModel, IDictionary values)
 {
     if (values.Contains(MIGRATION_ID))
     {
         viewModel.MigrationId = Convert.ToString(values[MIGRATION_ID]);
     }
     if (values.Contains(PRODUCT_VERSION))
     {
         viewModel.ProductVersion = Convert.ToString(values[PRODUCT_VERSION]);
     }
 }
        public async Task <HttpResponseMessage> Post(FormDataCollection form)
        {
            var model     = new P__EFMigrationsHistory(_uow);
            var viewModel = new P__EFMigrationsHistoryViewModel();
            var values    = JsonConvert.DeserializeObject <IDictionary>(form.Get("values"));

            PopulateViewModel(viewModel, values);

            Validate(viewModel);
            if (!ModelState.IsValid)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, GetFullErrorMessage(ModelState)));
            }

            CopyToModel(viewModel, model);

            await _uow.CommitChangesAsync();

            return(Request.CreateResponse(HttpStatusCode.Created, model.MigrationId));
        }
 private void CopyToModel(P__EFMigrationsHistoryViewModel viewModel, P__EFMigrationsHistory model)
 {
     model.MigrationId    = viewModel.MigrationId;
     model.ProductVersion = viewModel.ProductVersion;
 }