示例#1
0
        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();
        }
示例#2
0
        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);
        }
示例#3
0
        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."));
        }