private RiskActivityViewModel CloneActivity(RiskActivityViewModel activity, RiskActivityViewModel activityToClone)
        {
            decimal budget = default(decimal);

            if (activityToClone.BudgetStr != null)
            {
                budget = decimal.Parse(activityToClone.BudgetStr.Replace(",", string.Empty));
            }

            activity.ActivityDescription     = activityToClone.ActivityDescription;
            activity.ManagementStrategy      = activityToClone.ManagementStrategy;
            activity.ActvityStatusId         = activityToClone.ActvityStatusId;
            activity.TriggerEventOrMilestone = activityToClone.TriggerEventOrMilestone;
            activity.CurrentCompletationDate = activityToClone.CurrentCompletationDate;
            activity.BudgetStr                = activityToClone.BudgetStr;
            activity.Budget                   = budget;
            activity.FundingSourceId          = activityToClone.FundingSourceId;
            activity.Responsible              = activityToClone.Responsible;
            activity.Institution              = activityToClone.Institution;
            activity.Justification            = activityToClone.Justification;
            activity.ActivityCode             = activityToClone.ActivityCode;
            activity.ActivityId               = activityToClone.ActivityId;
            activity.ManagementStrategyValues = activityToClone.ManagementStrategyValues;

            return(activity);
        }
        private RiskActivityViewModel GetRiskAcitivyFromModel(RiskMatrixViewModel model, int ActivityId)
        {
            RiskActivityViewModel activity = null;

            activity = model.Risks
                       .SelectMany(s => s.ResponsePlanActivity)
                       .Where(a => a.ActivityId == ActivityId)
                       .FirstOrDefault();

            return(activity);
        }
        public virtual ActionResult AddNewRowActivity(RiskMatrixViewModel model, string riskMatrixId, string operationNumber, int activityId)
        {
            int riskMatrixIdParsed = default(int);

            model = GetSelectItems(model);

            RiskActivityViewModel activity = new RiskActivityViewModel
            {
                ActivityId              = default(int),
                ActivityCode            = default(int),
                ActivityDescription     = string.Empty,
                CurrentCompletationDate = null,
                TriggerEventOrMilestone = null
            };

            if (activityId != default(int))
            {
                GetActivityByIdRequest requestApp = new GetActivityByIdRequest
                {
                    ActivityId = activityId
                };

                var activityFromModel = GetRiskAcitivyFromModel(model, activityId);
                var resultResponse    = new GetActivityByIdResponse();

                if (activityFromModel == null)
                {
                    resultResponse = _riskMastrixService.GetActivitybyId(requestApp);

                    if (!resultResponse.IsValid)
                    {
                        return(new HttpStatusCodeResult(HttpStatusCode.NoContent, resultResponse.ErrorMessage));
                    }

                    activity = CloneActivity(activity, resultResponse.ItemActivity);
                }
                else
                {
                    activity = CloneActivity(activity, activityFromModel);
                    activity.ManagementStrategy = LogicManagementStrategy(activity.ManagementStrategyValues);
                }
            }

            if (!int.TryParse(riskMatrixId, out riskMatrixIdParsed))
            {
                var code = model.Risks
                           .Where(x => x.CodeGuid == riskMatrixId)
                           .Select(a => a.ResponsePlanActivity)
                           .LastOrDefault()
                           .LastOrDefault();

                if (activity.ActivityCode == default(int))
                {
                    activity.ActivityCode = code != null ? code.ActivityCode + CONSTONE : default(int) + CONSTONE;
                }

                model.SelectedRisk = riskMatrixId;
                model.CodeGuid     = riskMatrixId;
                model.Risks.Where(x => x.CodeGuid == riskMatrixId)
                .Select(s => s.ResponsePlanActivity)
                .FirstOrDefault()
                .Add(activity);
            }
            else
            {
                var code = model.Risks
                           .Where(x => x.RiskId == riskMatrixIdParsed)
                           .Select(a => a.ResponsePlanActivity)
                           .LastOrDefault()
                           .LastOrDefault();

                if (activity.ActivityCode == default(int))
                {
                    activity.ActivityCode = code != null ? code.ActivityCode + CONSTONE : default(int) + CONSTONE;
                }

                model.SelectedRisk = riskMatrixIdParsed.ToString();
                model.Risks.Where(x => x.RiskId == riskMatrixIdParsed)
                .Select(s => s.ResponsePlanActivity)
                .FirstOrDefault()
                .Add(activity);
            }

            return(PartialView("~/Areas/RiskMatrix/Views/Controls/NewActivity.cshtml", model));
        }