private UpdateProviderEducationRequest CreateRequest()
 {
     var request = new UpdateProviderEducationRequest();
     request.Id = _existingProviderEducationId;
     request.ProviderId = _providerIdWithEducation;
     request.EducationTypeId = _educationTypeId;
     request.InstitutionName = Guid.NewGuid().ToString();
     request.YearCompleted = "2000";
     return request;
 }
        public static void Save(ProviderAdminDetailView parent, SubEntity providerEducations, int providerId)
        {
            try
            {
                providerEducations.ErrorMessage = string.Empty;

                //Edits
                foreach (var record in providerEducations.Records.Where(r => r.Action == RecordActions.Edited))
                {
                    var request = new UpdateProviderEducationRequest();

                    request.ProviderId = providerId;
                    request.Id = int.Parse(parent.GetFieldValue(record.Fields, _id));
                    request.EducationTypeId = int.Parse(parent.GetFieldValue(record.Fields, _educationTypeId));
                    request.InstitutionName = parent.GetFieldValue(record.Fields, _institutionName);
                    request.IsCompleted = bool.Parse(parent.GetFieldValue(record.Fields, _isCompleted));
                    request.YearCompleted = parent.GetFieldValue(record.Fields, _yearCompleted);

                    parent.ProcessRequest<UpdateProviderEducationResponse>(request);
                }

                //Existing Records Added
                foreach (var record in providerEducations.Records.Where(r => r.Action == RecordActions.Added))
                {
                    var request = new AddProviderEducationRequest()
                    {
                        ProviderId = providerId,
                        EducationTypeId = int.Parse(parent.GetFieldValue(record.Fields, _educationTypeId)),
                        InstitutionName = parent.GetFieldValue(record.Fields, _institutionName),
                        IsCompleted = bool.Parse(parent.GetFieldValue(record.Fields, _isCompleted)),
                        YearCompleted = parent.GetFieldValue(record.Fields, _yearCompleted)
                    };

                    parent.ProcessRequest<AddProviderEducationResponse>(request);
                }

                //New Records Created
                foreach (var record in providerEducations.Records.Where(r => r.Action == RecordActions.New))
                {
                    if (string.IsNullOrEmpty(parent.GetFieldValue(record.Fields, _educationTypeId)))
                    {
                        //Add New Language
                        var addEducationTypeRequest = new AddEducationTypeRequest()
                        {
                            Name = parent.GetFieldValue(record.Fields, _educationTypeName),
                            IsEnabled = true
                        };
                        record.Fields.First(f => f.FieldName == _educationTypeId).FieldValue = parent.ProcessRequest<AddEducationTypeResponse>(addEducationTypeRequest).Id;
                    }

                    //Add newly created language to provider
                    var request = new AddProviderEducationRequest()
                    {
                        ProviderId = providerId,
                        EducationTypeId = int.Parse(parent.GetFieldValue(record.Fields, _educationTypeId)),
                        InstitutionName = parent.GetFieldValue(record.Fields, _institutionName),
                        IsCompleted = bool.Parse(parent.GetFieldValue(record.Fields, _isCompleted)),
                        YearCompleted = parent.GetFieldValue(record.Fields, _yearCompleted)
                    };

                    parent.ProcessRequest<AddProviderEducationResponse>(request);
                }

                //Deletes
                foreach (var record in providerEducations.Records.Where(r => r.Action == RecordActions.Deleted))
                {
                    var request = new DeleteProviderEducationRequest()
                    {
                        Id = int.Parse(parent.GetFieldValue(record.Fields, _id))
                    };
                    parent.ProcessRequest<DeleteProviderEducationResponse>(request);
                }
            }
            catch (Exception ex)
            {
                providerEducations.ErrorMessage = ex.Message;
                throw;
            }

            providerEducations = BuildEducationsSubEntity(parent, providerId);
        }