Пример #1
0
        public override async Task <BaseResponse> UpdateAsync(HolidayData request, ServerCallContext context)
        {
            try
            {
                if (request is null)
                {
                    await _holidaysRepository.UpdateAsync(null);
                }

                Holiday holiday = FromRpcModel(request);
                int     result  = await _holidaysRepository.UpdateAsync(holiday);

                if (result == 0)
                {
                    throw new Exception("Holiday has not been updated");
                }

                BaseResponse response = new()
                {
                    Code         = Code.Success,
                    ErrorMessage = string.Empty,
                    DataId       = holiday.Id
                };

                LogData logData = new()
                {
                    CallSide         = nameof(HolidaysService),
                    CallerMethodName = nameof(UpdateAsync),
                    CreatedOn        = _dateTimeUtil.GetCurrentDateTime(),
                    Request          = request,
                    Response         = response
                };
                _logger.AddLog(logData);

                return(response);
            }
            catch (NullReferenceException nrex)
            {
                LogData logData = new()
                {
                    CallSide         = nameof(HolidaysService),
                    CallerMethodName = nameof(UpdateAsync),
                    CreatedOn        = _dateTimeUtil.GetCurrentDateTime(),
                    Request          = request,
                    Response         = nrex
                };
                _logger.AddErrorLog(logData);

                return(new BaseResponse
                {
                    Code = Code.DataError,
                    ErrorMessage = nrex.Message
                });
            }
            catch (ArgumentException aex)
            {
                LogData logData = new()
                {
                    CallSide         = nameof(HolidaysService),
                    CallerMethodName = nameof(UpdateAsync),
                    CreatedOn        = _dateTimeUtil.GetCurrentDateTime(),
                    Request          = request,
                    Response         = aex
                };
                _logger.AddErrorLog(logData);

                return(new BaseResponse
                {
                    Code = Code.DataError,
                    ErrorMessage = aex.Message
                });
            }
            catch (DbUpdateException duex)
            {
                LogData logData = new()
                {
                    CallSide         = nameof(HolidaysService),
                    CallerMethodName = nameof(UpdateAsync),
                    CreatedOn        = _dateTimeUtil.GetCurrentDateTime(),
                    Request          = request,
                    Response         = duex
                };
                _logger.AddErrorLog(logData);

                return(new BaseResponse
                {
                    Code = Code.DbError,
                    ErrorMessage = "An error occured while updating holiday"
                });
            }
            catch (Exception ex)
            {
                LogData logData = new()
                {
                    CallSide         = nameof(HolidaysService),
                    CallerMethodName = nameof(UpdateAsync),
                    CreatedOn        = _dateTimeUtil.GetCurrentDateTime(),
                    Request          = request,
                    Response         = ex
                };
                _logger.AddErrorLog(logData);

                return(new BaseResponse
                {
                    Code = Code.UnknownError,
                    ErrorMessage = ex.Message
                });
            }
        }