public virtual JsonResult IndexDelaysDetails(string operationNumber)
        {
            DelayResponse response;
            var           jsonDataRequest = PageSerializationHelper.DeserializeJsonForm(Request.Form[0]);
            var           viewModel       = PageSerializationHelper.DeserializeObject <DelaysEditModel>(jsonDataRequest.SerializedData);

            Dictionary <int, string> ListOutputs  = new Dictionary <int, string>();
            Dictionary <int, string> ListOutcomes = new Dictionary <int, string>();

            var ResultOP = _ClientDelayArchievementRepository.GetListOutputs(operationNumber);
            var ResultOC = _ClientDelayArchievementRepository.GetListOutComes(operationNumber);

            foreach (var data in ResultOP)
            {
                if (data.Key != 0)
                {
                    ListOutputs.Add(data.Key, data.Value);
                }
            }

            foreach (var data in ResultOC)
            {
                if (data.Key != 0)
                {
                    ListOutcomes.Add(data.Key, data.Value);
                }
            }

            string lang           = IDBContext.Current.CurrentLanguage.ToUpper();
            var    ListDelaysType = _ClientDelayArchievementRepository.GetTypesDelay(lang);

            viewModel.UpdateAchievementDelayFromFieldViewModel(jsonDataRequest.ClientFieldData, ListOutputs, ListOutcomes, ListDelaysType);

            response = new DelayResponse();

            if (viewModel.DeleteDelay.Count > 0)
            {
                response.IsValid = _ClientDelayArchievementRepository.DeleteAchievement(viewModel.DeleteDelay.ToArray());
            }

            if (viewModel.DeleteOtherDelay.Count > 0)
            {
                response.IsValid = _ClientDelayArchievementRepository.DeleteOtherDelay(viewModel.DeleteOtherDelay.ToArray());
            }

            ViewBag.IsFREditable = _findingRecomendationService.OperationEditValidation(operationNumber);

            var userName = IDBContext.Current.UserLoginName;

            var errorMessage = SynchronizationHelper.AccessToResources("edit", TCMGlobalValues.URL_DELAYS_DETAILS, operationNumber, userName);

            if (!string.IsNullOrWhiteSpace(errorMessage))
            {
                response.IsValid      = false;
                response.ErrorMessage = errorMessage;
            }
            else
            {
                response.IsValid = _ClientDelayArchievementRepository.SaveDelays(viewModel);

                if (response.IsValid)
                {
                    SynchronizationHelper.TryReleaseLock(TCMGlobalValues.URL_DELAYS_DETAILS, operationNumber, userName);
                }
            }

            return(Json(response));
        }