private void Save() { _locationTypeId = int.Parse(CommonUtils.GetFieldValue(_viewModel.Fields, _idField), CultureInfo.InvariantCulture); var nameValue = CommonUtils.GetFieldValue(_viewModel.Fields, _nameField); var isEnabledValue = bool.Parse(CommonUtils.GetFieldValue(_viewModel.Fields, _isEnabledField)); var isExternalValue = bool.Parse(CommonUtils.GetFieldValue(_viewModel.Fields, _isExternalField)); var siteIndicatorValue = bool.Parse(CommonUtils.GetFieldValue(_viewModel.Fields, _siteIndicatorField)); var imageUrlValue = CommonUtils.GetFieldValue(_viewModel.Fields, _imageUrlField); if (string.IsNullOrEmpty(nameValue)) throw new Exception("Location Type name is required."); if (_locationTypeId == 0) { var request = new AddOrgUnitTypeRequest { Name = nameValue, IsEnabled = isEnabledValue, IsOutsideOfOrganization = isExternalValue, SiteIndicator = siteIndicatorValue, ImageUrl = imageUrlValue }; _locationTypeId = ProcessRequest<AddOrgUnitTypeResponse>(request).Id; } else { if (_viewModel.Action == RecordActions.Edited) { var updateRequest = new UpdateOrgUnitTypeRequest { Id = _locationTypeId, Name = nameValue, IsEnabled = isEnabledValue, IsOutsideOfOrganization = isExternalValue, SiteIndicator = siteIndicatorValue, ImageUrl = imageUrlValue }; ProcessRequest<UpdateOrgUnitTypeResponse>(updateRequest); } } }
public static void Save(LocationAdminDetailView parent, SubEntity orgUnitTypes, int orgUnitId) { var partiallySaved = false; try { orgUnitTypes.ErrorMessage = string.Empty; if (orgUnitTypes.Records.Count(s => s.Fields.Any(f => f.FieldName == _isPrimaryOrgUnitTypeField) && bool.Parse(parent.GetFieldValue(s.Fields, _isPrimaryOrgUnitTypeField))) > 1) throw new BusinessException("Only one Location Type can be set as the primary location"); //Edits foreach (var record in orgUnitTypes.Records.Where(r => r.Action == RecordActions.Edited)) { var request = new UpdateOrgUnitOrgUnitTypeRequest { Id = int.Parse(parent.GetFieldValue(record.Fields, _idField)), OrgUnitId = orgUnitId, OrgUnitTypeId = int.Parse(parent.GetFieldValue(record.Fields, _orgUnitTypeIdField)), IsPrimaryOrgUnitType = bool.Parse(parent.GetFieldValue(record.Fields, _isPrimaryOrgUnitTypeField)) }; parent.ProcessRequest<UpdateOrgUnitOrgUnitTypeResponse>(request); partiallySaved = true; } //Existing Records Added foreach (var record in orgUnitTypes.Records.Where(r => r.Action == RecordActions.Added)) { var request = new AddOrgUnitOrgUnitTypeRequest() { OrgUnitId = orgUnitId, OrgUnitTypeId = int.Parse(parent.GetFieldValue(record.Fields, _orgUnitTypeIdField)), IsPrimaryOrgUnitType = bool.Parse(parent.GetFieldValue(record.Fields, _isPrimaryOrgUnitTypeField)), }; parent.ProcessRequest<AddOrgUnitOrgUnitTypeResponse>(request); partiallySaved = true; } //New Records Created foreach (var record in orgUnitTypes.Records.Where(r => r.Action == RecordActions.New)) { //Add New OrgUnit Type var addTypeRequest = new AddOrgUnitTypeRequest() { Name = parent.GetFieldValue(record.Fields, _nameField), IsEnabled = bool.Parse(parent.GetFieldValue(record.Fields, _isEnabledField)), IsOutsideOfOrganization = bool.Parse(parent.GetFieldValue(record.Fields, _isExternalField)), SiteIndicator = bool.Parse(parent.GetFieldValue(record.Fields, _siteIndicatorField)), ImageUrl = parent.GetFieldValue(record.Fields, _imageUrlField) }; var addedTypeId = parent.ProcessRequest<AddOrgUnitTypeResponse>(addTypeRequest).Id; partiallySaved = true; //Add newly created type to OrgUnit var request = new AddOrgUnitOrgUnitTypeRequest() { OrgUnitId = orgUnitId, OrgUnitTypeId = addedTypeId, IsPrimaryOrgUnitType = bool.Parse(parent.GetFieldValue(record.Fields, _isPrimaryOrgUnitTypeField)) }; parent.ProcessRequest<AddOrgUnitOrgUnitTypeResponse>(request); partiallySaved = true; } //Deletes foreach (var record in orgUnitTypes.Records.Where(r => r.Action == RecordActions.Deleted)) { var request = new RemoveOrgUnitOrgUnitTypeRequest() { Id = int.Parse(parent.GetFieldValue(record.Fields, _idField)) }; parent.ProcessRequest<RemoveOrgUnitOrgUnitTypeResponse>(request); partiallySaved = true; } } catch (Exception ex) { orgUnitTypes.ErrorMessage = ex.Message; if (!partiallySaved) throw; } orgUnitTypes = BuildLocationTypesSubEntity(parent, orgUnitId); }