public async Task <ManagerResponse <ContactDetail> > Create(ContactDetail model)
        {
            _logger.LogInformation("Create: Begin");

            var result = new ManagerResponse <ContactDetail>
            {
                ResultStatus = Common.Enums.ManagerResponseResult.Success,
                Result       = new List <ContactDetail>()
            };

            var dao = _mapper.Map <ContactDetail, Data.Dao.ContactDetail>(model);

            var parentId = await TryGetParentId(ContactUid);

            if (parentId == null)
            {
                _logger.LogWarning("Create: End (Invalid ContactUid)");
                result.ResultStatus = Common.Enums.ManagerResponseResult.ForeignKeyViolation;
                return(result);
            }
            dao.ContactId = parentId.Value;

            _unitOfWork.Add(dao);
            try
            {
                await _unitOfWork.SaveChangesAsync();
            }
            catch (DbUpdateException ex)
            {
                _logger.LogError("Create: DbUpdateException", ex);

                var dbErrorType = _dbExceptionHelper.HandleUpdateException(ex);
                switch (dbErrorType)
                {
                case Common.Enums.DbUpdateExceptionType.ForeignKeyConstraintViolation:
                    result.ResultStatus = Common.Enums.ManagerResponseResult.ForeignKeyViolation;
                    result.ErrorMessage = "Foreign key constraint violation";
                    return(result);

                case Common.Enums.DbUpdateExceptionType.UniqueKeyConstraintViolation:
                    result.ResultStatus = Common.Enums.ManagerResponseResult.UniqueKeyViolation;
                    result.ErrorMessage = "Unique key constraint violation";
                    return(result);

                default:
                    result.ResultStatus = Common.Enums.ManagerResponseResult.UnknownError;
                    result.ErrorMessage = "Unknown database error";
                    return(result);
                }
            }

            var createdModel = _mapper.Map <Data.Dao.ContactDetail, ContactDetail>(dao);

            //createdModel.ContactUid = contactUid;
            result.Result.Add(createdModel);

            _logger.LogInformation("Create: End");
            return(result);
        }
Example #2
0
        public async Task <ManagerResponse <Contact> > Create(Contact model)
        {
            _logger.LogInformation("Create: Begin");

            var dao = _mapper.Map <Contact, Data.Dao.Contact>(model);

            _unitOfWork.Add(dao);

            var result = new ManagerResponse <Contact>
            {
                ResultStatus = Common.Enums.ManagerResponseResult.Success,
                Result       = new List <Contact>()
            };

            try
            {
                await _unitOfWork.SaveChangesAsync();
            }
            catch (DbUpdateException ex)
            {
                _logger.LogError("Create: DbUpdateException", ex);

                var dbErrorType = _dbExceptionHelper.HandleUpdateException(ex);
                switch (dbErrorType)
                {
                case Common.Enums.DbUpdateExceptionType.UniqueKeyConstraintViolation:
                    result.ResultStatus = Common.Enums.ManagerResponseResult.UniqueKeyViolation;
                    result.ErrorMessage = "Unique constraint violation";
                    return(result);

                default:
                    result.ResultStatus = Common.Enums.ManagerResponseResult.UnknownError;
                    result.ErrorMessage = "Unknown database error";
                    return(result);
                }
            }
            // TODO

            var createdModel = _mapper.Map <Data.Dao.Contact, Contact>(dao);

            result.Result.Add(createdModel);

            _logger.LogInformation("Create: End");
            return(result);
        }