private void UpdateFields(CustomersPnDbAnySql dbContext, FieldsUpdateModel fieldsUpdate, List <CustomerField> customerFields) { foreach (CustomerField field in customerFields) // Itterating through a list of customerFields. { FieldUpdateModel fieldModel = fieldsUpdate.Fields.FirstOrDefault(x => x.Id == field.FieldId); // takes field from list of fields if (fieldModel != null) { field.FieldStatus = fieldModel.FieldStatus;// sets new status for field, based on the updatemodels status. } } dbContext.SaveChanges(); }
public void FieldUpdateModel_Update_DoesUpdate() { // Arrange Random rnd = new Random(); Field newField = new Field { Name = Guid.NewGuid().ToString() }; newField.Create(DbContext); // Act FieldUpdateModel fieldUpdateModel = new FieldUpdateModel(); fieldUpdateModel.Name = newField.Name; List <FieldUpdateModel> list = new List <FieldUpdateModel>(); list.Add(fieldUpdateModel); FieldsUpdateModel fieldsUpdate = new FieldsUpdateModel(); fieldsUpdate.Fields = list; // TODO: FIX newField.Update(DbContext); Field dbField = DbContext.Fields.AsNoTracking().First(); List <Field> fieldList = DbContext.Fields.AsNoTracking().ToList(); // Assert Assert.NotNull(dbField); Assert.AreEqual(1, fieldList.Count()); Assert.AreEqual(fieldUpdateModel.Name, dbField.Name); }
public async Task <IActionResult> UpdateField(FieldUpdateModel fieldUpdateModel) { var user = await _userManager.GetUserAsync(User); var adminRoleID = (await _applicationDbContext.Roles.SingleOrDefaultAsync(r => r.Name.Equals("Admin"))).Id; var staffRoleID = (await _applicationDbContext.Roles.SingleOrDefaultAsync(r => r.Name.Equals("Staff"))).Id; var bypassChangeRequest = await _applicationDbContext.UserRoles.AnyAsync(r => r.UserId.Equals(user.Id) && (r.RoleId.Equals(adminRoleID) || r.RoleId.Equals(staffRoleID))); if (bypassChangeRequest) { if (fieldUpdateModel.TableType == TableType.CELEBRATION) { var celebration = await _applicationDbContext.Celebrations.Where(c => c.ID == fieldUpdateModel.Pk).FirstOrDefaultAsync(); var proptery = celebration.GetType().GetProperty(fieldUpdateModel.Name, BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance); var memberType = proptery.PropertyType; var nonNullType = Nullable.GetUnderlyingType(memberType); if (nonNullType != null) { memberType = nonNullType; } var converted = ConvertHelper.ConvertType(memberType, fieldUpdateModel.Value); if (converted != null) { proptery.SetValue(celebration, Convert.ChangeType(converted, memberType), null); } else { Response.StatusCode = (int)HttpStatusCode.BadRequest; return(Json($"Invalid value format for {TableType.CELEBRATION.ToString()}")); } } else if (fieldUpdateModel.TableType == TableType.WIP) { var wip = await _applicationDbContext.WIPs.Where(c => c.ID == fieldUpdateModel.Pk).FirstOrDefaultAsync(); var proptery = wip.GetType().GetProperty(fieldUpdateModel.Name, BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance); var memberType = proptery.PropertyType; var nonNullType = Nullable.GetUnderlyingType(memberType); if (nonNullType != null) { memberType = nonNullType; } var converted = ConvertHelper.ConvertType(memberType, fieldUpdateModel.Value); if (converted != null) { proptery.SetValue(wip, Convert.ChangeType(converted, memberType), null); } else { Response.StatusCode = (int)HttpStatusCode.BadRequest; return(Json($"Invalid value format for {TableType.WIP.ToString()}")); } } else if (fieldUpdateModel.TableType == TableType.NEWIMPOP) { var newImpOp = await _applicationDbContext.NewImpOps.Where(c => c.ID == fieldUpdateModel.Pk).FirstOrDefaultAsync(); var proptery = newImpOp.GetType().GetProperty(fieldUpdateModel.Name, BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance); var memberType = proptery.PropertyType; var nonNullType = Nullable.GetUnderlyingType(memberType); if (nonNullType != null) { memberType = nonNullType; } var converted = ConvertHelper.ConvertType(memberType, fieldUpdateModel.Value); if (converted != null) { proptery.SetValue(newImpOp, Convert.ChangeType(converted, memberType), null); } else { Response.StatusCode = (int)HttpStatusCode.BadRequest; return(Json($"Invalid value format for {TableType.NEWIMPOP.ToString()}")); } } else if (fieldUpdateModel.TableType == TableType.IMPIDEAS) { var impIdeasImplemented = await _applicationDbContext.ImpIdeasImplemented.Where(c => c.ID == fieldUpdateModel.Pk).FirstOrDefaultAsync(); var proptery = impIdeasImplemented.GetType().GetProperty(fieldUpdateModel.Name, BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance); var memberType = proptery.PropertyType; var nonNullType = Nullable.GetUnderlyingType(memberType); if (nonNullType != null) { memberType = nonNullType; } var converted = ConvertHelper.ConvertType(memberType, fieldUpdateModel.Value); if (converted != null) { proptery.SetValue(impIdeasImplemented, Convert.ChangeType(converted, memberType), null); } else { Response.StatusCode = (int)HttpStatusCode.BadRequest; return(Json($"Invalid value format for {TableType.IMPIDEAS.ToString()}")); } } else { Response.StatusCode = (int)HttpStatusCode.BadRequest; return(Json("No table found.")); } } else { dynamic jObject = new JObject(); jObject.Name = fieldUpdateModel.Name; jObject.Value = fieldUpdateModel.Value ?? HttpUtility.HtmlEncode(fieldUpdateModel.Value); var changeRequestType = ChangeRequestType.MODIFY; var changeRequest = await _applicationDbContext.ChangeRequests.SingleOrDefaultAsync(c => c.AssociatedID.Equals(fieldUpdateModel.Pk) && c.AssociatedName.Equals(fieldUpdateModel.Name) && c.TableName.Equals(TableType.CELEBRATION)); if (changeRequest != null) { changeRequest.Values = jObject.ToString(); } else { _applicationDbContext.ChangeRequests.Add(new ChangeRequest { Username = user.UserName, ChangeRequestType = changeRequestType, TableName = fieldUpdateModel.TableType, AssociatedID = fieldUpdateModel.Pk, AssociatedName = fieldUpdateModel.Name, BoardID = fieldUpdateModel.BoardID, Values = jObject.ToString() }); } await _applicationDbContext.SaveChangesAsync(); return(Json("Change requested.")); } await _applicationDbContext.SaveChangesAsync(); return(Json("Updated.")); }