public void deletes_provider_location()
        {
            //verify precondition
            AssertExistsAndHasChildEntities();

            //setup
            var request = new DeleteProviderOrgUnitRequest();
            request.OrgUnitId = _locationId;
            request.ProviderId = _providerId;

            //act
            var response = HandleRequest<DeleteProviderOrgUnitResponse>(CreateHandler(), request);

            //assert
            AssertDeleted();
        }
        public static void Save(ProviderAdminDetailView parent, SubEntity providerOrgUnits, int providerId)
        {
            foreach (var record in providerOrgUnits.Records)
            {
                Validate(parent, record);

                //Update Record
                try
                {
                    //Edits
                    if (record.Action == RecordActions.Edited)
                    {
                        var request = new UpdateProviderOrgUnitRequest
                        {
                            Id = int.Parse(parent.GetFieldValue(record.Fields, _id), CultureInfo.InvariantCulture),
                            IsPrimary = bool.Parse(parent.GetFieldValue(record.Fields, _isPrimary)),
                            DisplayPhone = parent.GetFieldValue(record.Fields, _phone),
                            DisplayFax = parent.GetFieldValue(record.Fields, _fax),
                            IsAcceptingNewPatients = bool.Parse(parent.GetFieldValue(record.Fields, _isAcceptingNewPatients)),
                            AllowAppointmentRequests = bool.Parse(parent.GetFieldValue(record.Fields, _allowAppointmentRequests))
                        };
                        parent.ProcessRequest<UpdateProviderOrgUnitResponse>(request);
                    }

                    //Adds
                    if (record.Action == RecordActions.Added)
                    {
                        var request = new AddProviderOrgUnitRequest
                        {
                            ProviderId = providerId,
                            OrgUnitId = int.Parse(parent.GetFieldValue(record.Fields, _orgUntiId)),
                            IsPrimary = bool.Parse(parent.GetFieldValue(record.Fields, _isPrimary)),
                            DisplayPhone = parent.GetFieldValue(record.Fields, _phone),
                            DisplayFax = parent.GetFieldValue(record.Fields, _fax),
                            IsAcceptingNewPatients = bool.Parse(parent.GetFieldValue(record.Fields, _isAcceptingNewPatients)),
                            AllowAppointmentRequests = bool.Parse(parent.GetFieldValue(record.Fields, _allowAppointmentRequests))
                        };
                        parent.ProcessRequest<AddProviderOrgUnitResponse>(request);
                    }

                    //Deletes
                    if (record.Action == RecordActions.Deleted)
                    {
                        var request = new DeleteProviderOrgUnitRequest()
                        {
                            ProviderId = providerId,
                            OrgUnitId = int.Parse(parent.GetFieldValue(record.Fields, _orgUntiId))
                        };
                        parent.ProcessRequest<DeleteProviderOrgUnitResponse>(request);
                    }
                }
                catch (Exception ex)
                {
                    providerOrgUnits.ErrorMessage = ex.Message;
                    throw;
                }

                //Update Subentities for Record
                foreach (var subentity in record.SubEntities)
                {
                    if (subentity.EntityName == ProviderAdminDetailView._providerOrgUnitInsurancesSubEntity)
                        SaveInsurances(parent, subentity, int.Parse(parent.GetFieldValue(record.Fields, _id)));
                    else if (subentity.EntityName == ProviderAdminDetailView._providerOrgUnitServicesSubEntity)
                        SaveServices(parent, subentity, int.Parse(parent.GetFieldValue(record.Fields, _id)));
                    else if (subentity.EntityName == _hoursSubEntity)

                        SaveHours(parent, subentity);
                }
            }

            providerOrgUnits = BuildLocationsSubEntity(parent, providerId);
        }