public ActionResult ConfirmMoveIndicators(MoveIndicatorsModel mim, string selectedProfileId,
                                                  List <int> selectedDomainId, int selectedAreaTypeId, string indicatorTransferDetails)
        {
            var groupId    = GetSelectedGroupIdUsingProfileKeyDomainAndAreaTypeId(mim.UrlKey, mim.DomainId, mim.AreaTypeId);
            var modelCount = 0;

            //There are indicators to delete (move to the archive domain)
            var indicatorSpecifierStrings = indicatorTransferDetails.Split(',').ToList();
            var indicatorSpecifiers       = IndicatorSpecifierParser.Parse(indicatorSpecifierStrings);

            foreach (var indicatorSpecifier in indicatorSpecifiers)
            {
                var indicatorId = indicatorSpecifier.IndicatorId;
                var sexId       = indicatorSpecifier.SexId;
                var ageId       = indicatorSpecifier.AgeId;

                //Don't move if identical indicator already exists in destination.
                if (!_profileRepository.IndicatorGroupingsExist(indicatorId,
                                                                Convert.ToInt32(selectedDomainId[0]), mim.AreaTypeId, ageId,
                                                                sexId))
                {
                    var currentIndicator = mim.IndicatorsToTransfer[modelCount];

                    _profileRepository.MoveIndicatorToDomain(indicatorId, groupId, mim.AreaTypeId,
                                                             currentIndicator.SexId, currentIndicator.AgeId,
                                                             selectedDomainId[0], selectedAreaTypeId, sexId, ageId);

                    _profileRepository.LogAuditChange("Indicator " + indicatorId + " moved from [" + mim.DomainName +
                                                      " (Area: " + mim.AreaTypeId + ", SexId:" + currentIndicator.SexId +
                                                      ", AgeId:" + currentIndicator.AgeId + " )] Into [" +
                                                      _reader.GetGroupingMetadataList(selectedDomainId)[0].GroupName +
                                                      " (Area: " + selectedAreaTypeId + ", SexId:" + sexId + ", AgeId:" + ageId + " )]",
                                                      indicatorId, null, _userName, DateTime.Now, CommonUtilities.AuditType.Move.ToString());

                    var indicatorMetadata = _reader.GetIndicatorMetadata(indicatorId);
                    if (indicatorMetadata.OwnerProfileId == mim.Profile.Id)
                    {
                        // Indicator is being moved out of owner profile so owner must change
                        var newOwnerProfileId = _reader.GetProfileDetails(selectedProfileId).Id;
                        new IndicatorOwnerChanger(_reader, _profileRepository)
                        .AssignIndicatorToProfile(indicatorId, newOwnerProfileId);
                    }
                }
                modelCount++;
            }

            _profileRepository.Dispose();

            _writer.ReorderIndicatorSequence(groupId, mim.AreaTypeId);

            return(Redirect(Request.UrlReferrer.AbsoluteUri));
        }
        protected override void OnActionExecuted(ActionExecutedContext filterContext)
        {
            _profileRepository.Dispose();
            _lookUpsRepository.Dispose();

            base.OnActionExecuted(filterContext);
        }
Example #3
0
 protected override void Dispose(bool disposing)
 {
     if (disposing)
     {
         var repository = new ProfileRepository();
         repository.Dispose();
     }
     base.Dispose(disposing);
 }