public static void PopulateRequestFieldValues(LocationAdminDetailView parent, SubEntity sites, int orgUnitId, OrgUnitRequestBase request) { var record = sites.Records.SingleOrDefault(r => r.Action == RecordActions.Edited); if (record == null) return; request.CustomUrl = parent.GetFieldValue(record.Fields, _siteUrlField); request.CustomLiveUrl = parent.GetFieldValue(record.Fields, _siteUrlLiveField); request.CustomStageUrl = parent.GetFieldValue(record.Fields, _siteUrlStageField); request.CustomQaUrl = parent.GetFieldValue(record.Fields, _siteUrlQaField); request.CustomDevUrl = parent.GetFieldValue(record.Fields, _siteUrlDevField); // Determine if site association is enabled var associationEnabled = false; bool.TryParse(CommonUtils.GetFieldValue(record.Fields, _associationEnabledField), out associationEnabled); // Add/remove "Site" location type automatically if site association is enabled/disabled var locationTypeSubEntity = parent._viewModel.SubEntities.Single(s => s.EntityName == LocationAdminDetailView._locationTypeSubEntity); var hasSiteLocationType = HasSiteLocationType(locationTypeSubEntity); if (associationEnabled && !hasSiteLocationType) { var orgUnitType = new OrgUnitOrgUnitTypeDto { OrgUnitTypeId = 1, IsEnabled = true, IsPrimaryOrgUnitType = false }; var locationTypeRecord = LocationTypesHelper.CreateRecord(orgUnitType, orgUnitId); locationTypeRecord.Action = RecordActions.Added; locationTypeSubEntity.Records.Add(locationTypeRecord); } else if (!associationEnabled && hasSiteLocationType) { var siteLocationTypeRecord = locationTypeSubEntity.Records.SingleOrDefault(s => s.Fields.Any(f => f.FieldName == "Name" && (f.FieldValue as string == "Site"))); if (siteLocationTypeRecord != null && siteLocationTypeRecord.Action != RecordActions.Added) siteLocationTypeRecord.Action = RecordActions.Deleted; } }
public static void Save(LocationAdminDetailView parent, SubEntity hours, int orgUnitId) { var partiallySaved = false; try { hours.ErrorMessage = string.Empty; //New foreach (var record in hours.Records.Where(r => r.Action == RecordActions.New)) { var timeSpan = CommonUtils.CreateScheduleTimeSpan(parent.GetFieldValue(record.Fields, _dayField), parent.GetFieldValue(record.Fields, _openTime), parent.GetFieldValue(record.Fields, _closeTime)); var request = new AddOrgUnitScheduleRequest() { LocationId = int.Parse(parent.GetFieldValue(record.Fields, _orgUnitIdField)), OpenTime = timeSpan.OpenTime, OpenHours = timeSpan.OpenHours }; parent.ProcessRequest<AddOrgUnitScheduleResponse>(request); partiallySaved = true; } //Deletes foreach (var record in hours.Records.Where(r => r.Action == RecordActions.Deleted)) { var request = new DeleteOrgUnitScheduleRequest(int.Parse(parent.GetFieldValue(record.Fields, _idField))); parent.ProcessRequest<DeleteOrgUnitScheduleResponse>(request); partiallySaved = true; } } catch (Exception ex) { hours.ErrorMessage = ex.Message; if(!partiallySaved) throw; } hours = BuildLocationHoursSubEntity(parent, orgUnitId); }
public static void Save(LocationAdminDetailView parent, SubEntity insurances, int orgUnitId) { var partiallySaved = false; try { insurances.ErrorMessage = string.Empty; //Existing Records Added foreach (var record in insurances.Records.Where(r => r.Action == RecordActions.Added)) { var request = new AddOrgUnitInsuranceRequest() { OrgUnitId = orgUnitId, InsuranceId = int.Parse(parent.GetFieldValue(record.Fields, _insuranceIdField)) }; parent.ProcessRequest<AddOrgUnitInsuranceResponse>(request); partiallySaved = true; } //New Records Created foreach (var record in insurances.Records.Where(r => r.Action == RecordActions.New)) { //Add New OrgUnit insurance var addInsuranceRequest = new AddInsuranceRequest() { Name = parent.GetFieldValue(record.Fields, _nameField), IsEnabled = true }; var addedInsuranceId = parent.ProcessRequest<AddInsuranceResponse>(addInsuranceRequest).Id; //Add newly created insurance to OrgUnit var request = new AddOrgUnitInsuranceRequest() { OrgUnitId = orgUnitId, InsuranceId = addedInsuranceId }; parent.ProcessRequest<AddOrgUnitInsuranceResponse>(request); partiallySaved = true; } //Deletes foreach (var record in insurances.Records.Where(r => r.Action == RecordActions.Deleted)) { var request = new RemoveOrgUnitInsuranceRequest() { Id = int.Parse(parent.GetFieldValue(record.Fields, _idField)) }; parent.ProcessRequest<RemoveOrgUnitInsuranceResponse>(request); partiallySaved = true; } } catch (Exception ex) { insurances.ErrorMessage = ex.Message; if(!partiallySaved) throw; } insurances = BuildLocationInsurancesSubEntity(parent, orgUnitId); }
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); }