private Dictionary <int, object> CreateResourceRequiredFieldData(Dictionary <string, int> fields, TestCoreFramework.Enums.ResourceType resourceId, int ownerId, ResourceFields.ValidPhase phase, ResourceFields.ValidDateTime time)
        {
            var result = new Dictionary <int, object>();

            foreach (var fieldName in ResourceFields.RequireFields[resourceId])
            {
                result.Add(fields[$"{resourceId.ToResourceName()}.{fieldName}"], ResourceFields.DefaultValue[fieldName](resourceId, ownerId, resourceId != TestCoreFramework.Enums.ResourceType.Contract ? RootPhaseOption.Data[resourceId] : 0, ResourceFields.PhaseTimeMapper[time], RecordsCreator));
            }
            return(result);
        }
        public void InsertInvalidRecordMissingRequiredFieldsTest(TestCoreFramework.Enums.ResourceType resourceId, int ownerId, ResourceFields.ValidPhase phase, ResourceFields.InvalidDateTime time, string requiredField)
        {
            var fieldHandler = new FieldManager();
            var fields       = fieldHandler.GetFieldGuid(ResourceFields.RequireFields[resourceId], new[] { resourceId })
                               .Result.Result.ToDictionary(x => $"{char.ToUpper(x.Resource[0]) + x.Resource.Substring(1)}.{x.Alias}", x => (int)UuidUtil.GetId(x.Id));

            var recordHandler     = new RecordManager();
            var requestParameters = CreateResourceRequiredFieldData(fields, resourceId, ownerId, phase, time);

            requestParameters.Remove(fields[$"{resourceId.ToResourceName()}.{requiredField}"]);
            var request = RecordRequestComposer.ComposeCreateRequest()
                          .Append(resourceId, requestParameters)
                          .Result;

            var response = recordHandler.WriteRecords(request);

            PrAssert.That(response, PrIs.ErrorResponse());
        }
        public void UpdateMissingRequiredFieldRecordWithTest(TestCoreFramework.Enums.ResourceType resourceId, string field)
        {
            var fieldHandler = new FieldManager();
            var fields       = fieldHandler.GetFieldGuid(ResourceFields.RequireFields[resourceId].Where(s => s != field), new[] { resourceId })
                               .Result.Result.ToDictionary(x => $"{char.ToUpper(x.Resource[0]) + x.Resource.Substring(1)}.{x.Alias}", x => (int)UuidUtil.GetId(x.Id));
            var parameters = new Dictionary <int, object>();

            foreach (var item in ResourceFields.RequireFields[resourceId].Where(s => s != field))
            {
                parameters.Add(fields[$"{resourceId.ToResourceName()}.{field}"], ResourceFields.ValueDictionary[ResourceFields.FieldsDictionary[resourceId][$"{resourceId.ToResourceName()}.{field}"]]);
            }
            var recordHandler = new RecordManager();
            var response      = recordHandler.UpdateRecords(
                RecordRequestComposer.ComposeUpdateRequest().Append(item => item.ForResource(resourceId)
                                                                    .Append(x => x.WithId((int)RecordsCreator.Data[resourceId.ToPrivateApiResource()].Id).AppendFields(parameters))).Result);

            PrAssert.That(response, PrIs.ErrorResponse());
        }
        public void UpdateValidRecordWithOwnerTest(TestCoreFramework.Enums.ResourceType resourceId, ResourceFields.ValidPhase phase, ResourceFields.ValidDateTime time)
        {
            var fieldHandler = new FieldManager();
            var fields       = fieldHandler.GetFieldGuid(new List <string>()
            {
                "P_Phase", "P_PhaseDate"
            }, new[] { resourceId })
                               .Result.Result.ToDictionary(x => $"{char.ToUpper(x.Resource[0]) + x.Resource.Substring(1)}.{x.Alias}", x => (int)UuidUtil.GetId(x.Id));
            var recordHandler = new RecordManager();
            var response      = recordHandler.UpdateRecords(
                RecordRequestComposer.ComposeUpdateRequest().Append(item => item.ForResource(resourceId)
                                                                    .Append(x => x.WithId((int)RecordsCreator.Data[resourceId.ToPrivateApiResource()].Id)
                                                                            .AppendFields(new Dictionary <int, object> {
                [fields[$"{resourceId.ToResourceName()}.P_Phase"]] = RootPhaseOption.Data[resourceId], [fields[$"{resourceId.ToResourceName()}.P_PhaseDate"]] = ResourceFields.PhaseTimeMapper[time]
            }))).Result);

            PrAssert.That(response, PrIs.SuccessfulResponse());
            PrAssert.That(response.Result, PrIs.Not.Null);
            PrAssert.That(response.Result.Ids[0][0], PrIs.Not.Null);
        }
        public void InsertValidRecordWithUserFieldsTest(TestCoreFramework.Enums.ResourceType resourceId)
        {
            string field        = customFields.Data[$"{resourceId}"].Field.Name;
            var    fieldHandler = new FieldManager();
            var    fields       = fieldHandler.GetFieldGuid(ResourceFields.RequireFields[resourceId].Append(field), new[] { resourceId })
                                  .Result.Result.ToDictionary(x => $"{char.ToUpper(x.Resource[0]) + x.Resource.Substring(1)}.{x.Alias}", x => (int)UuidUtil.GetId(x.Id));

            var recordHandler = new RecordManager();
            var request       = RecordRequestComposer.ComposeCreateRequest()
                                .Append(resourceId, CreateResourceUserFieldData(fields, resourceId, 1, ResourceFields.ValidPhase.Root, ResourceFields.ValidDateTime.Now, $"{resourceId.ToResourceName()}.{field}"))
                                .Result;

            var response = recordHandler.WriteRecords(request);

            PrAssert.That(response, PrIs.SuccessfulResponse());
            PrAssert.That(response.Result, PrIs.Not.Null);
            PrAssert.That(response.Result.Ids[0][0], PrIs.Not.Null);
            cleaner.Delete(resourceId.ToPrivateApiResource(), response.Result.Ids[0][0].ToString());
        }
        public void UpdateValidRecordWithUserFieldTest(TestCoreFramework.Enums.ResourceType resourceId)
        {
            string field        = customFields.Data[$"{resourceId}"].Field.Name;
            var    fieldHandler = new FieldManager();
            var    fields       = fieldHandler.GetFieldGuid(new List <string> {
                field
            }, new[] { resourceId })
                                  .Result.Result.ToDictionary(x => $"{char.ToUpper(x.Resource[0]) + x.Resource.Substring(1)}.{x.Alias}", x => (int)UuidUtil.GetId(x.Id));
            var recordHandler = new RecordManager();
            var response      = recordHandler.UpdateRecords(
                RecordRequestComposer.ComposeUpdateRequest().Append(item => item.ForResource(resourceId)
                                                                    .Append(x => x.WithId((int)RecordsCreator.Data[resourceId.ToPrivateApiResource()].Id).AppendField(fields[$"{resourceId.ToResourceName()}.{field}"], ResourceFields.FieldsDictionary[resourceId][field] == ResourceFields.InputType.Option ?
                                                                                                                                                                      OptionForAlias.Data[field] :
                                                                                                                                                                      ResourceFields.ValueDictionary[ResourceFields.FieldsDictionary[resourceId][$"{resourceId.ToResourceName()}.{field}"]]))).Result);

            PrAssert.That(response, PrIs.SuccessfulResponse());
            PrAssert.That(response.Result, PrIs.Not.Null);
            PrAssert.That(response.Result.Ids[0][0], PrIs.Not.Null);
        }
        public void UpdateValidRecordWithOwnerTest(TestCoreFramework.Enums.ResourceType resourceId, int ownerId)
        {
            var fieldHandler = new FieldManager();
            var fields       = fieldHandler.GetFieldGuid(new List <string>()
            {
                "P_Owner"
            }, new[] { resourceId })
                               .Result.Result.ToDictionary(x => $"{char.ToUpper(x.Resource[0]) + x.Resource.Substring(1)}.{x.Alias}", x => (int)UuidUtil.GetId(x.Id));
            var recordHandler = new RecordManager();
            var response      = recordHandler.UpdateRecords(
                RecordRequestComposer.ComposeUpdateRequest().Append(item => item.ForResource(resourceId)
                                                                    .Append(x => x.WithId((int)RecordsCreator.Data[resourceId.ToPrivateApiResource()].Id).AppendField(fields[$"{resourceId.ToResourceName()}.P_Owner"], ownerId))).Result);

            PrAssert.That(response, PrIs.SuccessfulResponse());
            PrAssert.That(response.Result, PrIs.Not.Null);
            PrAssert.That(response.Result.Ids[0][0], PrIs.Not.Null);
        }