Esempio n. 1
0
        public virtual ActionResult Delete(
            int impactId, int intervalId, bool accessedByAdmin, bool isThirInterval)
        {
            string user = IDBContext.Current.UserLoginName;

            Logger.GetLogger().WriteMessage(
                "OutcomesController", string.Format("I am {0}, accessAdmin: {1}", user, accessedByAdmin));

            CustomDeleteOutcomeModel deleteImpactModel = new CustomDeleteOutcomeModel();

            int totalRows = 0;

            OutcomeModel currentImpact = _clientResultsMatrix.FindOneOutcomeModel(
                new OutcomeSpecification()
            {
                OutcomeId = impactId
            });

            var existingImpacts = _clientResultsMatrix.FindAllOutcomeModelsBySpecification(
                totalRows,
                new OutcomeSpecification()
            {
                ResultsMatrixId = currentImpact.ResultsMatrixId
            },
                int.MaxValue,
                0,
                null).ToList <OutcomeModel>();

            existingImpacts.Where(x => x.OutcomeId == currentImpact.OutcomeId).ForEach(x =>
                                                                                       x.Statement = "Delete");

            existingImpacts.Sort((x, y) => x.Statement.CompareTo(y.Statement));

            deleteImpactModel.currentImpact = currentImpact;

            deleteImpactModel.existingImpacts = existingImpacts.ToList <OutcomeModel>();

            deleteImpactModel.intervalId = intervalId;

            deleteImpactModel.resultsMatrixId = currentImpact.ResultsMatrixId;

            if (intervalId == ResultsMatrixCodes.ThirdInterval || (accessedByAdmin && isThirInterval))
            {
                deleteImpactModel.AccessedByAdministrator = accessedByAdmin;
                deleteImpactModel.IsThirdInterval         = isThirInterval;
                ViewData["message"] = Localization.GetText("TCM.RCMW.RegisterChangesMany.TextMessage");
            }
            else
            {
                deleteImpactModel.AccessedByAdministrator = accessedByAdmin;
                deleteImpactModel.IsThirdInterval         = false;
            }

            deleteImpactModel.IsValidated =
                ClientResultsMatrix.IsValidateOutcomeBYOutcomeIndicatorYearPlans(impactId);

            return(PartialView(deleteImpactModel));
        }
Esempio n. 2
0
        public virtual ActionResult DeleteOutcome(CustomDeleteOutcomeModel deleteModel)
        {
            var code   = 0;
            var impact = _clientResultsMatrix.FindOneOutcomeModel(
                new OutcomeSpecification {
                OutcomeId = deleteModel.currentImpact.OutcomeId
            });

            var operation = _clientResultsMatrix.FindOneModel(
                new ResultsMatrixSpecification {
                ResultsMatrixId = impact.ResultsMatrixId
            });

            try
            {
                List <OutcomeIndicatorModel> outcomes = new List <OutcomeIndicatorModel>();

                foreach (var outcomeIndicator in deleteModel.currentImpact.OutcomeIndicators)
                {
                    var currentOutcome = this._clientResultsMatrix.FindOneOutcomeIndicatorModel(
                        new OutcomeIndicatorSpecification
                    {
                        OutcomeIndicatorId = outcomeIndicator.OutcomeIndicatorId
                    });

                    if (currentOutcome != null)
                    {
                        currentOutcome.ReassignToImpact = outcomeIndicator.ReassignToImpact;
                        outcomes.Add(currentOutcome);
                    }
                }

                deleteModel.currentImpact.OutcomeIndicators = outcomes;

                _clientResultsMatrix.DeleteImpact(
                    new ResultsMatrixModel
                {
                    ResultsMatrixId         = deleteModel.resultsMatrixId,
                    AccessedByAdministrator = deleteModel.AccessedByAdministrator,
                    IsThirdInterval         = deleteModel.IsThirdInterval
                },
                    deleteModel.currentImpact,
                    new IntervalModel {
                    IntervalId = deleteModel.intervalId
                },
                    IDBContext.Current.UserName);

                _cacheData.Remove(_outcomesCacheName, System.Web.Caching.CacheItemRemovedReason.Removed);

                code = 505;
            }
            catch (Exception)
            {
                code = 495;
            }

            return(RedirectToAction(
                       "Index",
                       "Outcomes",
                       new
            {
                operationNumber = operation.Operation.OperationNumber,
                state = code,
                filter = 0
            }));
        }