예제 #1
0
        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;
            }
        }
예제 #2
0
        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);
        }
예제 #4
0
        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);
        }