public Entity.BaseResponse <Entity.UserResponse> Manage([FromBody] Entity.AddUserRequest request) { Entity.BaseResponse <Entity.UserResponse> response = new Entity.BaseResponse <Entity.UserResponse>(true); try { var status = _service.Manage(request); response.IsSuccess = status.Success; response.Message = status.Message; response.Data = status.Data; } catch (Exception ex) { return(new Entity.BaseResponse <Entity.UserResponse>(false, ex.Message)); } return(response); }
public Entity.ActionStatus Manage(Entity.AddUserRequest request) { Entity.ActionStatus actionStatus = new Entity.ActionStatus(true); try { if (request.Id == null || request.Id == Guid.Empty) { //var addUserResult = _iotConnectClient.User.Add(Mapper.Configuration.Mapper.Map<IOT.AddUserModel>(request)).Result; var addUserResult = AsyncHelpers.RunSync <IOT.DataResponse <IOT.AddUserResult> >(() => _iotConnectClient.User.Add(Mapper.Configuration.Mapper.Map <IOT.AddUserModel>(request))); if (addUserResult != null && addUserResult.status && addUserResult.data != null) { request.Id = Guid.Parse(addUserResult.data.newId.ToUpper()); var dbUser = Mapper.Configuration.Mapper.Map <Entity.AddUserRequest, Model.User>(request); dbUser.Guid = request.Id; dbUser.CreatedDate = DateTime.Now; dbUser.CompanyGuid = component.helper.SolutionConfiguration.CompanyId; dbUser.GensetGuid = request.EntityGuid.Value; dbUser.CreatedBy = component.helper.SolutionConfiguration.CurrentUserId; dbUser.IsActive = true; dbUser.IsDeleted = false; var tmpdbUser = _userRepository.FindBy(u => u.Guid == dbUser.Guid).FirstOrDefault(); if (tmpdbUser == null) { actionStatus = _userRepository.Insert(dbUser); } else { actionStatus = new Entity.ActionStatus() { Data = tmpdbUser, Message = "", Success = true }; } actionStatus.Data = Mapper.Configuration.Mapper.Map <Model.User, Entity.UserResponse>(actionStatus.Data); if (!actionStatus.Success) { _logger.ErrorLog(new Exception($"User is not added in solution database, Error: {actionStatus.Message}"), this.GetType().Name, MethodBase.GetCurrentMethod().Name); var deleteEntityResult = _iotConnectClient.User.Delete(request.Id.ToString()).Result; if (deleteEntityResult != null && !deleteEntityResult.status) { _logger.ErrorLog(new Exception($"User is not deleted from iotconnect, Error: {actionStatus.Message}"), this.GetType().Name, MethodBase.GetCurrentMethod().Name); actionStatus.Success = false; actionStatus.Message = new UtilityHelper().IOTResultMessage(deleteEntityResult.errorMessages); } } } else { _logger.ErrorLog(new Exception($"User is not added in iotconnect, Error: {actionStatus.Message}"), this.GetType().Name, MethodBase.GetCurrentMethod().Name); actionStatus.Success = false; actionStatus.Message = new UtilityHelper().IOTResultMessage(addUserResult.errorMessages); } } else { var olddbUser = _userRepository.FindBy(x => x.Guid.Equals(request.Id)).FirstOrDefault(); if (olddbUser == null) { throw new NotFoundCustomException($"{CommonException.Name.NoRecordsFound} : User"); } //var updateEntityResult = _iotConnectClient.User.Update(request.Id.ToString(), Mapper.Configuration.Mapper.Map<IOT.UpdateUserModel>(request)).Result; var updateEntityResult = AsyncHelpers.RunSync <IOT.DataResponse <IOT.UpdateUserResult> >(() => _iotConnectClient.User.Update(request.Id.ToString(), Mapper.Configuration.Mapper.Map <IOT.UpdateUserModel>(request))); if (updateEntityResult != null && updateEntityResult.status && updateEntityResult.data != null) { bool?olddbUserStatus = olddbUser.IsActive; var dbUser = Mapper.Configuration.Mapper.Map(request, olddbUser); //Update Status if user is not modifying his own profile if (request.Id != SolutionConfiguration.CurrentUserId && olddbUserStatus != request.IsActive) { var updateStatusEntityResult = AsyncHelpers.RunSync <IOT.DataResponse <IOT.UpdateUserStatusResult> >(() => _iotConnectClient.User.UpdateUserStatus(request.Id.ToString(), request.IsActive)); if (updateStatusEntityResult != null && updateStatusEntityResult.status && updateStatusEntityResult.data != null && updateStatusEntityResult.errorMessages.Count > 0) { _logger.ErrorLog(new Exception($"User is not updated in iotconnect, Error: {updateStatusEntityResult.errorMessages}"), this.GetType().Name, MethodBase.GetCurrentMethod().Name); actionStatus.Success = false; actionStatus.Message = new UtilityHelper().IOTResultMessage(updateStatusEntityResult.errorMessages); return(actionStatus); } } else { dbUser.IsActive = updateEntityResult.data.isActive; } // dbUser.CreatedBy = olddbUser.CreatedBy; dbUser.CreatedDate = olddbUser.CreatedDate; dbUser.UpdatedDate = DateTime.Now; dbUser.UpdatedBy = component.helper.SolutionConfiguration.CurrentUserId; dbUser.CompanyGuid = component.helper.SolutionConfiguration.CompanyId; actionStatus = _userRepository.Update(dbUser); actionStatus.Data = Mapper.Configuration.Mapper.Map <Model.User, Entity.UserResponse>(actionStatus.Data); if (!actionStatus.Success) { _logger.ErrorLog(new Exception($"User is not updated in solution database, Error: {actionStatus.Message}"), this.GetType().Name, MethodBase.GetCurrentMethod().Name); actionStatus.Success = false; actionStatus.Message = "Somthing went wrong!"; } } else { _logger.ErrorLog(new Exception($"User is not added in iotconnect, Error: {updateEntityResult.message}"), this.GetType().Name, MethodBase.GetCurrentMethod().Name); actionStatus.Success = false; actionStatus.Message = new UtilityHelper().IOTResultMessage(updateEntityResult.errorMessages); } } } catch (Exception ex) { _logger.ErrorLog(ex, "UserManager.Delete " + ex); actionStatus.Success = false; actionStatus.Message = ex.Message; } return(actionStatus); }