public int?AddNewField(AddFieldVM vm)
        {
            int?res = null;

            try
            {
                if (vm.Id == -1)
                {
                    PublicationField field = new PublicationField
                    {
                        Name = vm.Name,
                        Type = vm.Type
                    };
                    if (field.Type == FieldType.Select && vm.SelectValues != null)
                    {
                        Dictionary <int, string> values = new Dictionary <int, string>();
                        int i = 0;
                        foreach (string value in vm.SelectValues)
                        {
                            values.Add(i++, value);
                        }
                        field.FieldData = Newtonsoft.Json.JsonConvert.SerializeObject(values);
                    }
                    context.PublicationFields.Add(field);
                    context.SaveChanges();
                    res = field.PublicationFieldId;
                }
                else
                {
                    PublicationField field = context.PublicationFields.FirstOrDefault(f => f.PublicationFieldId == vm.Id);
                    if (field != null)
                    {
                        field.Name = vm.Name;
                        if (field.Type == FieldType.Select && vm.SelectValues != null)
                        {
                            Dictionary <int, string> values = new Dictionary <int, string>();
                            int i = 0;
                            foreach (string value in vm.SelectValues)
                            {
                                values.Add(i++, value);
                            }
                            field.FieldData = Newtonsoft.Json.JsonConvert.SerializeObject(values);
                        }
                        context.Entry(field).State = EntityState.Modified;
                        context.SaveChanges();
                        res = field.PublicationFieldId;
                    }
                }
            }
            catch { }
            return(res);
        }
 public IActionResult AddNewField([FromBody] AddFieldVM vm)
 {
     if (service.isFieldNameValid(vm))
     {
         int?newId = service.AddNewField(vm);
         if (newId.HasValue)
         {
             return(PartialView("TemplateRow", new FieldVM()
             {
                 AttachId = -1, FieldId = newId.Value, Type = vm.Type
             }));
         }
         else
         {
             return(StatusCode(500, "Wyst¹pi³ b³¹d w zapisie!"));
         }
     }
     else
     {
         return(StatusCode(500, "Istnieje pole o podanej nazwie."));
     }
 }
 public bool isFieldNameValid(AddFieldVM vm)
 {
     return(!context.PublicationFields.Any(f => f.Type == vm.Type && f.Name.ToLower() == vm.Name.ToLower() && f.PublicationFieldId != vm.Id));
 }