예제 #1
0
        public async Task <IdentificationRegRespObj> Handle(AddUpdateSupplierIdentificationCommand request, CancellationToken cancellationToken)
        {
            try
            {
                var apiResponse = new IdentificationRegRespObj {
                    Status = new APIResponseStatus {
                        IsSuccessful = false, Message = new APIResponseMessage()
                    }
                };
                if (request.IsCorporate && (string.IsNullOrEmpty(request.RegistrationNumber) || request.IncorporationDate == null || request.BusinessType < 1))
                {
                    apiResponse.Status.Message.FriendlyMessage = "Reg. Number, Date of Incorporation and Business Type is reqiuired for a Corporate Identity";
                    return(apiResponse);
                }

                if (request.IsCorporate && request.BusinessType == (int)BusinessType.Others && string.IsNullOrEmpty(request.OtherBusinessType))
                {
                    apiResponse.Status.Message.FriendlyMessage = "Other business type is required";
                    return(apiResponse);
                }

                if (!request.IsCorporate && (request.Identification < 1 || string.IsNullOrEmpty(request.Identification_Number) || request.Expiry_Date == null || request.Nationality < 1))
                {
                    apiResponse.Status.Message.FriendlyMessage = "Identification Number, Expiry Date, and Nationality is required for a non-corporate Identity";
                    return(apiResponse);
                }

                var currentUserId        = _httpContextAccessor.HttpContext.User?.FindFirst(x => x.Type == "userId").Value;
                UserDataResponseObj user = null;

                user = await _serverRequest.UserDataAsync();

                cor_identification item = new cor_identification();
                item.Deleted               = false;
                item.CreatedOn             = request.SupplierId > 0 ? (DateTime?)null : DateTime.Now;
                item.CreatedBy             = user != null ? user.UserName : "";
                item.UpdatedBy             = user != null ? user.UserName : "";
                item.Expiry_Date           = request.Expiry_Date ?? (DateTime?)null;
                item.HaveWorkPermit        = request.HaveWorkPermit;
                item.Identification        = request.Identification;
                item.SupplierId            = request.SupplierId;
                item.Identification_Number = request.Identification_Number;
                item.IdentificationId      = request.IdentificationId;
                item.IncorporationDate     = request.IncorporationDate ?? (DateTime?)null;
                item.IsCorporate           = request.IsCorporate;
                item.Nationality           = request.Nationality;
                item.OtherBusinessType     = request.OtherBusinessType;
                item.RegistrationNumber    = request.RegistrationNumber;
                item.BusinessType          = request.BusinessType;

                await _supRepo.AddUpdateSupplierIdentificationAsync(item);

                apiResponse.Status.IsSuccessful            = true;
                apiResponse.Status.Message.FriendlyMessage = "Successful";
                return(apiResponse);
            }
            catch (Exception ex)
            {
                #region Log error to file
                var errorCode = ErrorID.Generate(4);
                _logger.Error($"ErrorID : {errorCode} Ex : {ex?.Message ?? ex?.InnerException?.Message} ErrorStack : {ex?.StackTrace}");
                return(new IdentificationRegRespObj
                {
                    Status = new APIResponseStatus
                    {
                        IsSuccessful = false,
                        Message = new APIResponseMessage
                        {
                            FriendlyMessage = "Error occured!! Unable to process item",
                            MessageId = errorCode,
                            TechnicalMessage = $"ErrorID : {errorCode} Ex : {ex?.Message ?? ex?.InnerException?.Message} ErrorStack : {ex?.StackTrace}"
                        }
                    }
                });

                #endregion
            }
        }