/// <summary> /// This method will delete the connection for the user. /// </summary> /// <param name="model.UserId"></param> /// <param name="model.BenefactorId"></param> /// <returns></returns> public async Task <int> DeleteUserConnection(int type, int userId, int benefactorId) { try { int deleteResult = 0; if (type == ConnectionsType.ExistingConnection) { /* Check for existing connection. */ object obj = new { UserId = userId, BenefactorId = benefactorId, IsActive = true, IsDeleted = false }; var connection = await GetDataByIdAsync(obj); if (connection != null) { /* Delete operation is performed. */ connection.isActive = false; connection.isDeleted = true; connection.modifiedBy = userId; connection.modifiedDate = DateTime.UtcNow; object objphoto = new { EntityId = benefactorId, PhotoType = 5 }; using (var sqlConnection = await _databaseConnectionFactory.CreateConnectionAsync()) { try { var checkImage = await sqlConnection.QuerySingleOrDefaultAsync <Photo>(SQLQueryConstants.GetBenefactorPhotoQuery, objphoto); if (checkImage != null) { objphoto = new { Id = checkImage.Id }; await sqlConnection.QuerySingleOrDefaultAsync <Photo>(SQLQueryConstants.DeleteBenefactorPhotoQuery, objphoto); } } catch (Exception) { } finally { sqlConnection.Close(); sqlConnection.Dispose(); } } try { using (var sqlConnection = await _databaseConnectionFactory.CreateConnectionAsync()) { try { var userBenefactor = (await sqlConnection.QuerySingleOrDefaultAsync <User>(SQLQueryConstants.GetUserByIdQuery, new { Id = benefactorId, IsActive = true, IsDeleted = false })).Email; var invitation = (await sqlConnection.QuerySingleOrDefaultAsync <Invitation>(SQLQueryConstants.GetInvitationByUserBenefactorEmailQuery, new { userId, EmailAddress = userBenefactor.Trim(), IsActive = true, IsDeleted = false })); if (invitation != null) { invitation.IsActive = false; invitation.IsDeleted = true; invitation.ModifiedBy = userId; invitation.ModifiedDate = DateTime.UtcNow; await sqlConnection.ExecuteAsync(SQLQueryConstants.UpdateInvitationByEmailQuery, invitation); } var reloadRequest = ((await sqlConnection.QueryAsync <ReloadBalanceRequest>(SQLQueryConstants.GetReloadRequestQuery, new { userId, benefactorId, IsActive = true, IsDeleted = false }))).ToList(); if (reloadRequest.Count() > 0) { reloadRequest.ForEach(a => a.isActive = false); reloadRequest.ForEach(a => a.isActive = true); await sqlConnection.ExecuteAsync(SQLQueryConstants.UpdateReloadBalanceRequest, reloadRequest); } } catch (Exception) { throw; } finally { sqlConnection.Close(); sqlConnection.Dispose(); } } } catch (Exception) { throw; } deleteResult = await UpdateAsync(connection, new { Id = connection.id }); } } else { /* Check for existing connection. */ var invitation = await _invitation.GetSingleDataByConditionAsync(new { CreatedBy = userId, id = benefactorId, IsActive = true, IsDeleted = false }); if (invitation != null) { /* Delete operation is performed. */ invitation.IsActive = false; invitation.IsDeleted = true; invitation.ModifiedBy = userId; invitation.ModifiedDate = DateTime.UtcNow; deleteResult = await _invitation.UpdateAsync(invitation, new { Id = invitation.id }); } } return(deleteResult); } catch (Exception) { throw; } }