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); }
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); }