public async Task <demoResult> UpdatePlan([FromBody] ActivatedPlanInstructionDto activatedPlanInstructionDto)
        {
            if (activatedPlanInstructionDto == null || !activatedPlanInstructionDto.IsValid())
            {
                _logger.Warning($"Model not valid");
                return(BadRequest(ErrorCodes.ValidationError));
            }

            var result = await _caseService.UpdateActivatedPlanInstructionsAsync(GetUserId(), activatedPlanInstructionDto);

            if (result.IsFailure)
            {
                _logger.Warning("Error updating card field");
                return(BadRequest(result.ErrorCode));
            }

            return(Ok());
        }
Пример #2
0
        /// <summary>
        /// Обновление активированных инструкциях плана
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="activatedInstructionDto"></param>
        /// <returns></returns>
        public async Task <Result> UpdateActivatedPlanInstructionsAsync(
            Guid userId,
            ActivatedPlanInstructionDto activatedInstructionDto)
        {
            if (!activatedInstructionDto.ActivationDate.HasValue)
            {
                _logger.Warning($"Время активации инструкции с Id {activatedInstructionDto.InstructionId} не задано. CaseId: {activatedInstructionDto.CaseId}");
                return(Result.Failure(ErrorCodes.ValidationError));
            }

            using (_unitOfWork.Begin())
            {
                var caseCard = await _caseRepository.GetById(activatedInstructionDto.CaseId);

                if (caseCard == null)
                {
                    _logger.Warning($"Case with Id: {activatedInstructionDto.CaseId} not found");
                    return(Result.Failure(ErrorCodes.CaseNotFound));
                }

                var updateResult = caseCard.UpdateActivatedInstructions(
                    activatedInstructionDto.PlanId,
                    activatedInstructionDto.InstructionId,
                    activatedInstructionDto.ActivationDate.Value);

                if (updateResult.IsFailure)
                {
                    _logger.Warning(updateResult.ErrorMessage);
                    return(updateResult);
                }

                Result <string> caseStatusResult = caseCard.SetStatusInProgress();
                if (caseStatusResult.IsFailure)
                {
                    _logger.Warning(caseStatusResult.ErrorMessage);
                    return(Result.Failure(caseStatusResult.ErrorCode));
                }
                await _unitOfWork.CommitAsync();

                await _phoneHubMessageService.NotifyClientsAboutPlanUpdateAsync(activatedInstructionDto.CaseId, activatedInstructionDto.PlanId);

                return(Result.Success());
            }
        }